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

时间:2010-04-18 01:16:22

标签: 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个结果还是所有单独的行?

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

1 个答案:

答案 0 :(得分:11)

您的正则表达式使用的是{{1>} greedy 。请尝试使用.*。在匹配以下令牌之前,贪婪的匹配将尽可能,因此它将找到源文本中的最后一个.*?。在匹配下一个令牌之前,非贪婪的匹配将尽可能 little

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