我正在尝试构建一个匹配错误放置的li标签的表达式。在大多数情况下,它运作良好,除了我需要匹配的一个事件是前一场比赛的一部分。
这是我的表达:
/(<li>.*?)(<\/li>)(.*?)(<br><(li|\/ul)>)/gi
我试图匹配的文字如下:
<ul><br><li> text before invalid closing tag</li> remaining text<br><li> this should also be matched</li> but isn't<br><li> text before invalid closing tag</li> remaining text<br></ul><br>
这里应该有3场比赛,但我只得到2场比赛。您可以在下面的链接上测试,但中间部分不匹配。我不确定是否有正确的方法来匹配之前匹配的文字。
答案 0 :(得分:0)
我实际上能够通过将模式匹配到下一个开始 li 或关闭 ul 标记来找到解决方案。这会阻止我的匹配重叠,并根据需要对结果进行分组。
/(<li>.*?)(<\/li>)(.*?)<br>(?=<(li|\/ul)>)/gi