gpt4 book ai didi

java - 使用 java 和正则表达式查找最后一次出现的位置

转载 作者:行者123 更新时间:2023-11-30 03:16:42 25 4
gpt4 key购买 nike

我正在从 XML 接收 HTML 代码,并尝试在 Java 中查找最后一个。当我运行代码时,我总是收到第一个范围,并且 groupCount 显示只有一个匹配(第一个)。我还尝试使用 XML 的硬编码版本(我创建了一个字符串变量,但仍然得到相同的结果)

这是我的代码:

String text = "<div><ul ><li><span>answer 1.</span></li><li><span>answer 2</span></li><li><span>answer3.</span></li><li><span>answer 4</span></li></ul><div><span>Cat 1 | Cat 2 | Cat 3</span></div></div>"
Pattern pattern3 = Pattern.compile("<span.*?(?=</span>)");
Matcher matcher3 = pattern3.matcher(desc);
if (matcher3.find()) {
int result = matcher3.groupCount();
String s = (matcher3.group(result))//->>always show the first result
}

最佳答案

您可以调用matcher.find再次,它会找到下一个匹配项。它不仅告诉您是否找到了任何东西,还主动搜索下一个匹配项。调用一次后,您只能获得第一个匹配项。当你再次调用时,下次调用matcher.group你会得到第二场比赛,依此类推。重复直到找不到任何结果,然后取最后的结果。另外,您并不真正需要 groupCount ,因为比赛中的组数始终相同 - 零。

String text = "<div><ul ><li><span>answer 1.</span></li><li><span>answer 2</span></li><li><span>answer3.</span></li><li><span>answer 4</span></li></ul><div><span>Cat 1 | Cat 2 | Cat 3</span></div></div>";
Pattern pattern3 = Pattern.compile("<span.*?(?=</span>)");
Matcher matcher3 = pattern3.matcher(text);
String s = null;
while (matcher3.find()) {
s = matcher3.group();
}
System.out.println(s);

输出为<span>Cat 1 | Cat 2 | Cat 3 .

如果您只想使用 <span> 中的内容标签,您可以使用正则表达式 "<span>(.*?)</span>"matcher3.group(1)获取第一对 () 中的内容(或者将标签放在前瞻和后瞻中,但恕我直言,这种方式更容易)。

关于java - 使用 java 和正则表达式查找最后一次出现的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32411445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com