如果我的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?
答案 0 :(得分:11)
您的正则表达式使用的是{{1>} greedy 。请尝试使用.*
。在匹配以下令牌之前,贪婪的匹配将尽可能多,因此它将找到源文本中的最后一个.*?
。在匹配下一个令牌之前,非贪婪的匹配将尽可能 little 。
然后,有关使用正则表达式解析HTML的更多信息,请参阅this answer。