2016-10-03 153 views
0

我有一個代碼將字符串視爲一個標籤並將所有內容全部提取出來。在這種情況下:「abc </a > <a> def」。如何分離提取標籤以獲取兩個字符串:「abc」和「def」?如何多次提取標籤內容?

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

我不是VotingToClose只是因爲我有一些疑惑,但可能是以下副本:http://stackoverflow.com/a/1732454/598289 – SJuan76

+0

可能重複的[RegEx匹配開放標記,除了XHTML自包含標記]( http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – baudsp

回答

2

不要使用正則表達式解析XML/HTML,因爲這些都是不正規的ranguages所以正則表達式不能使用。使用專用工具,如XPath(用於XML)或Jsoup(HTML)

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

會給你所有a元素和u可以遍歷它,並從每個節點所需的文本。