2016-10-03 102 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可以遍历它,并从每个节点所需的文本。