java - 此 Java 正则表达式将返回单个结果还是多个

标签 java regex

如果我的 HTML 是:

<tr><td>....</td><hr></tr>
<tr><td>....</td><hr></tr>
<tr><td>....</td><hr></tr>
<tr><td>....</td><hr></tr>
<tr><td>....</td><hr></tr>
<tr><td>....</td><hr></tr>

如果我的正则表达式是:

Patterp p = Pattern.compile("<tr>(.*)<hr></tr>");

这应该得到 1 个结果还是所有单独的行?

有没有办法强制它从顶部获取所有行,而不仅仅是整个 html <tr><hr></tr> 的最后一个实例?

最佳答案

您的正则表达式正在使用 .*这是贪婪的。尝试使用 .*?反而。贪心匹配将在匹配以下标记之前尽可能多地获取,因此它会找到最后一个 <hr>。在您的源文本中。非贪婪匹配将在匹配下一个标记之前尽可能地获取

然后,参见this answer有关使用正则表达式解析 HTML 的更多信息。

关于java - 此 Java 正则表达式将返回单个结果还是多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660725/

相关文章:

java - 创建一个仅用于流中的新变量

java - 在 ReSTLet 中上传带有描述的文件

javascript - 表情的正则表达式匹配

python - Re.findall 仅返回 Python 2.7 中的第一个匹配项

java - 正则表达式如下

html - 如何找到所有以 "<tr"结尾的表达式(stringi 包)

java - 在netty中是否可以在同一个tcp连接中获取多个请求?

java - 为什么 boolean 值在某些情况下可以转换为字符串,而在其他情况下则不能?

java - 如何在使用扫描仪收集输入时验证用户输入

c# - 仅替换字符串开头的字符