0

懒人的正则表达式链接:http ://regexr.com?33udv

测试字符串:

<li><a href="#"><strong>Start</strong></a></li><li><a href="#">End</a></li>

我想在搜索“开始”时进行匹配

<li><a href="#"><strong>Start</strong></a></li>

我的模式是这样的:

<li>(?!<li>)*Start.*?</li>

我的问题是它匹配两个列表子项,而我只想匹配包含“开始”的那个。

注意:这是一个非常可预测的 html 字符串,看起来总是一样的。我知道 Regex 不应该解析 html,但问题更多是关于对 Negative Lookaheads 的理解。

解决方案:

<li>((?!<li>).)*Start.*?</li>
4

1 回答 1

2

您发布的表达式与链接中的表达式不同。我将专注于链接中的那个。

.*是贪婪的,它会尝试找到最长的匹配。你想让它变得懒惰

<li>.*?Start.*?</li>
于 2013-02-27T15:38:43.617 回答