获取所有标签的模式

时间:2016-10-31 15:59:05

标签: regex

我有这个示例代码:

<ul><li><a href="http://www.example.com/aaa" class="tag">aaa</a></li><li><a href="http://www.example.com/bbb" class="tag">bbb</a></li><li><a href="http://www.example.com/ccc" class="tag">ccc</a></li></ul>

我需要获取aaabbbccc代码,并且我写了这样的模式:

/<a .* class=\"tag\">(.*?)<\/a>/

但这会导致错误的结果。您可以看到结果here

发生了什么事,我该如何解决?

1 个答案:

答案 0 :(得分:3)

你让你的第二个.*非贪婪,但不是你的第一个。由于这种贪婪的匹配,它匹配从开始<a直到第三个开头<a的末尾的所有内容。简单的解决方法是让第一个非贪婪:

<a .*? class=\"tag\">(.*?)<\/a>

这是更新的Wait

也就是说,根据您选择的语言提供的内容,以及您是否期望(甚至非常轻微)不同的HTML字符串,HTML解析器可能是更好的选择。