这个Java正则表达式会返回单个结果还是多个结果

Bla*_*man 4 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>
Run Code Online (Sandbox Code Playgroud)

如果我的正则表达式是:

Patterp p = Pattern.compile("<tr>(.*)<hr></tr>");
Run Code Online (Sandbox Code Playgroud)

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

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

Gre*_*ill 11

你的正则表达式使用的.*贪婪的.请尝试使用.*?.在匹配后续标记之前,贪婪的匹配将尽可能多地抓取,因此它将<hr>在源文本中找到最后一个.在匹配下一个令牌之前,非贪婪的匹配将尽可能少地抓取.

然后,请参阅此答案以获取有关使用正则表达式解析HTML的更多信息.