Jede Seite von Wikipedia:Java regex Wie finde ich die Elternübereinstimmung?
...
abas asdn asf asfs af
{{Template1
|a = Name surname
|b = jhsdf sdf
|c = {{Template2}}
|d =
|e = [[f]] and [[g]]
|h = asd asdasfgasgasg asgas jygh trdx dftf xcth
|i = 73
|j = {{Template2|abc|123}}
|j = {{Template3|aa=kkk|bb={{Template4|cc=uu}}}}
}}
asd wetd gdsgwew g
{{OtherTemplate
|sdf = 213
}}
...
Wie finde ich Template1
‚s Inhalt (Beginn ist |a
Ende ist }}
) mit Java regulären Ausdrücke?
Ich habe versucht:
String pattern = "\\{\\{\\s*Template1\\s*(.*?)\\}\\}";
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
Matcher m = p.matcher(content);
while (m.find()) {
if (!m.group().equals("")) {
System.out.println(m.group());
System.out.println("-----------------------");
}
}
Aber hier in der regex die erste }}
findet (was Template2
}}
) hält dann an.
Ich möchte }}
übergeben ist jede {{
ist offen. Dann möchte ich Top-Eltern-Match finden.
Ich möchte nach oben Template1
Inhalt zwischen oben {{
und }}
?.
EDIT:
Bitte beachten Sie, dass ich content
bin Parsen nach weißen Flecken zu entfernen.
content.replaceAll("\\s+","");
Denken Sie an Inhalt als Schreiben einer einzelnen Zeile.
Verwenden Sie 'Jsoup' api. Einfacher als das Schreiben von Regex – TheLostMind
Es wird dringend davon abgeraten, reguläre Ausdrücke zu verwenden, um Markup oder irgendetwas mit einer hierarchischen Grammatik zu analysieren. Verwenden Sie Ihren eigenen Parser oder jedes verfügbare Produkt (siehe auch den Kommentar von TheLostMind). – Mena
@TheLostMind ist nicht jsoup HTML-Parser? Wie kann ich "{{" mit "jsoup" analysieren – MarsPeople