[英]Java preg_match array
有字符串strng = "<title>text1</title><title>text2</title>";
如何獲得數組
arr[0] = "text1";
arr[1] = "text2";
我嘗試使用它,但結果有,而不是數組text1</title><title>text2
Pattern pattern = Pattern.compile("<title>(.*)</title>");
Matcher matcher = pattern.matcher(strng);
matcher.matches();
雖然我同意使用XML / HTML解析器是一種更好的替代方法,但使用正則表達式解決方案很簡單:
List<String> titles = new ArrayList<String>();
Matcher matcher = Pattern.compile("<title>(.*?)</title>").matcher(strng);
while(matcher.find()){
titles.add(matcher.group(1));
}
注意非貪婪的運算符.*?
並使用matcher.find()
代替matcher.matches()
。
參考:
看起來你想要一個為這類工作而構建的HTML
/ XML
解析器。
盡管如此, 如果你有一小部分的控制信息(如上面的一行 ),你可能會雇用超過迭代匹配 。 find()
使用正則表達式,如
(?<=\\>)\\w+(?=\\<)
同樣,由於正則表達式無法解析HTML / XML,因此應該通過適當的解析器解析比單個線程更復雜的任何內容。
這看起來像無效的XML,因為沒有容器元素,如果你制作有效的XML,你可以使用XML解析器解析它。 對於像上面這樣的小片段,我建議使用JDOM 。
如果是XML或HTML,請不要使用try並使用正則表達式,因為XML和HTML不是常規語言,並且您無法使用正則表達式成功解析,因為它們無法維持足夠的狀態。 只需搜索stackoverflow以獲取更詳細的信息。 這種情況經常出現,有很多關於為什么不這樣做的信息以及為什么它不會起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.