2016-10-04 4 views
-3

Als Antwort sind immer Zeichenfolge folgendRegex extrat bestimmten Zeichenfolge aus einer Antwortdatum

String response = "<span class="timeTempText">6:35a</span><span class="dividerText"> | </span><span class="timeTempText">59°F</span>" 

Daraus i holen müssen nur 6:35a and 59°F. subString und indexOf Methode i die Werte aus der Zeichenfolge bekommen und aber es scheint wie viel Code. Gibt es einen einfachen Weg, um es zu bekommen.Ich meine mit regulären Ausdruck? Mit regelmäßigen experesssion wie bekomme ich die Saiten.

+0

Obligatorische Links: [Warum sollten Sie XML oder HTML nicht mit einem regulären Ausdruck analysieren?] (Https://stackoverflow.com/questions/701166/can-you-provide-some-example-of-why-it-is -hard-to-parse-xml-und-html-with-a-reg) und [die unheiligen Folgen] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml -self-contained-tags/1732454 # 1732454). – VGR

Antwort

2

Versuchen Sie folgendes:

timeTempText">(.*?)<\/span> 


import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

final String regex = "timeTempText\">(.*?)<\\/span>"; 
final String string = "<span class="timeTempText">6:35a</span><span class="dividerText"> | </span><span class="timeTempText">59°F</span>" 
    + "asdfasdf asdfasdf timeTempText\">59°F</span> asdfasdf\n"; 

final Pattern pattern = Pattern.compile(regex); 
final Matcher matcher = pattern.matcher(string); 

while (matcher.find()) { 
    System.out.println("Full match: " + matcher.group(0)); 
    for (int i = 1; i <= matcher.groupCount(); i++) { 
     System.out.println("Group " + i + ": " + matcher.group(i)); 
    } 
} 

/* 1. Capturing Gruppe (.?).? passt auf ein beliebiges Zeichen (außer für Abschlusszeichen) *? Quantifier - Spiele zwischen Null und unbegrenzten Zeiten, so wenig wie möglich, je nach Bedarf (faul) Expandieren

*/

Capturing Gruppe 1 hat den Wert

+0

können Sie einen kleinen Code bereitstellen? – Psl

+0

Muster r = Pattern.compile (timeTempText "> (. *?) <\/span>); ?? – Psl

+0

oh toll thankz – Psl

1

Sie es mit regulären Ausdrücken tun, aber das ist Menge Code:

String response = "<span class=\"timeTempText\">6:35a</span><span class=\"dividerText\"> | </span><span class=\"timeTempText\">59°F</span>"; 
    Matcher matcher = Pattern.compile("\"timeTempText\">(.*?)</span>").matcher(response); 
    while (matcher.find()) { 
     System.out.println(matcher.group(1)); 
    } 

Erläuterung:

  • Sie erstellen eine Pattern
  • Dann rufen Sie die Matcher
  • Sie durchlaufen die Übereinstimmungen mit der while(matcher.find()) Idiom.
  • matcher.group(1) gibt die erste Gruppe des Musters zurück. I.e. der übereinstimmende Text zwischen dem ersten ()

Bitte beachten Sie, dass dieser Code sehr spröde ist. Du bist besser dran mit XPATH.

Verwandte Themen