如果我的 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/