2016-10-03 6 views
0

Ich habe einen Code, der String als ein Tag behandelt und alles zusammen extrahiert. In diesem Fall: "abc </a > <a> def". Wie man aus Tags getrennt extrahiert, um zwei Strings zu erhalten: "abc" und "def"?So extrahieren Sie den Tag-Inhalt mehrmals?

public static void main(String[] args) throws Exception { 
    Ex.findInTags("<a>((.*))</a>", "<a>abc</a> <a>def</a>"); 
} 
public static void findInTags(String a, String b) { 
    Pattern pattern = Pattern.compile(a); 
    Matcher matcher = pattern.matcher(b); 
    if (matcher.find()) { 
     System.out.println(matcher.group(1)); 
    } 
} 
+0

Ich bin nicht VotingToClose nur, weil ich einige Zweifel habe, aber möglicherweise ein Duplikat von: http://StackOverflow.com/a/1732454/598289 – SJuan76

+0

Mögliche Duplikate von [RegEx übereinstimmen offene Tags mit Ausnahme von XHTML-eigenen Tags] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – baudsp

Antwort

2

Verwenden Regex nicht XML/HTML zu analysieren, da diese nicht regelmäßig ranguages ​​sind so reguläre Ausdrücke kann nicht verwendet werden. Verwenden Sie spezielle Tools wie XPath (für XML) oder Jsoup (HTML)

Jsoup.parse("<a>abc</a> <a>def</a>").select("a")

geben Ihnen alle a Elemente und u können darüber durchlaufen und den gewünschten Text von jedem Knoten bekommen.

Verwandte Themen