簡體   English   中英

Java preg_match數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM