從Wikipedia任何頁面:Java的正則表達式如何找到父匹配?
...
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
}}
...
我怎樣才能找到Template1
的內容(開始時|a
到底是}}
)與Java正則表達式?
我想:
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("-----------------------");
}
}
但在這裏的正則表達式是找到第一}}
(這是Template2
}}
)然後停止。
我想通過}}
是任何{{
是開放的。然後我想找到頂級的父母匹配。
我想獲得頂部{{
和}}
之間的頂部Template1
?
編輯:
請記住去除空格後我解析content
。
content.replaceAll("\\s+","");
將內容視爲編寫單行。
使用'Jsoup' api。比編寫正則表達式更簡單 – TheLostMind
強烈建議不要使用正則表達式來解析標記,或使用分層語法的任何東西。使用您自己的解析器或任何可用的產品(另請參閱TheLostMind的評論)。 – Mena
@TheLostMind不是jsoup HTML解析器?我如何解析「{{」與「jsoup」 – MarsPeople