public void test(){
String source = "hello<a>goodA</a>boys can <a href=\"www.baidu.com\">goodB</a>\"\n"
+ " + \"this can help";
Pattern pattern = Pattern.compile("<a[\\s+.*?>|>](.*?)</a>");
Matcher matcher = pattern.matcher(source);
while (matcher.find()){
System.out.println("laozhu:" + matcher.group(1));
}
}
输出:
laozhu:goodA
laozhu:href="www.baidu.com">goodB
为什么第二个匹配不是laozhu:goodB
?
最佳答案
试试这个正则表达式:
<a(?: .*?)?>(\w+)<\/a>
所以你的Pattern
应该是这样的:
Pattern pattern = Pattern.compile("<a(?: .*?)?>(\\w+)<\\/a>");
它匹配 goodA
和 goodB
。
详细说明请看这里:Regex101 .
关于关于捕获组的java正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35911482/