2016-05-06 15 views
-1

Ich habe eine Zeichenfolge wie folgt:Wie kann ich einen Wert aus String mit Regex abrufen?

"text1 <text2> text3" 

Ich möchte <> nur den Text greifen. Also muss ich text2 bekommen. Wie kann ich es tun?

+0

Pflicht Link: [RegEx entspricht offenen Tags außer XHTML-eigenen Tags] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Pshemo

Antwort

1

Sie es wie folgt tun:

String value = "text1 <text2> text3 <text4>"; 
Pattern pattern = Pattern.compile("<([^>]*)>"); 
Matcher matcher = pattern.matcher(value); 
while (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

Ausgang:

text2 
text4 

Antwort Update:

Unter der Annahme, dass Sie wissen, dass Sie nur einen Wert haben zu extrahieren, Bohemian schlägt einen einfacheren Ansatz, schlägt er als nächstes gehen Sie vor:

String value = "text1 <text2> text3"; 
String target = value.replaceAll(".*<(.*)>.*", "$1"); 
System.out.println(target); 

Ausgang:

text2 
+0

Sie können es mit Weg tun weniger Code als das ... – Bohemian

+0

It ' s nicht einmal eine Zeile, es braucht nur einen Methodenaufruf: 'String target = value.replaceAll (". * <(.*)>. * "," $ 1 ");'. Weniger Code == weniger Bugs, einfacher zu lesen und zu pflegen. – Bohemian

+0

stellt sich die Frage klar, ob nur ein Wert von der Eingabe erhalten werden soll. Die einfachste Lösung ist immer die beste. – Bohemian

0

Ich schlage vor, Sie diese Zeichenfolge teilen mit „“ als Trennzeichen - Sie 3 -Elemente Array erhalten wird und das zweite ist, was Sie suchen

Verwandte Themen