Html 正则表达式将最近的标记与中间的一组单词进行匹配
我一直想弄明白这一点,但没有用。我在网上查阅了很多资料,其中一些很接近,但并不准确。假设我有以下代码:Html 正则表达式将最近的标记与中间的一组单词进行匹配,html,regex,Html,Regex,我一直想弄明白这一点,但没有用。我在网上查阅了很多资料,其中一些很接近,但并不准确。假设我有以下代码: <br> Message 1 <br> <br> Here is Message 2 <br> <br> Here is Message 2 (again) <br> 我要做的是返回所有消息2和最近的中断标记之间的文本。以下正则表达式已关闭: <br>[\s\S]*?Message 2[\s\S]*?<
<br>
Message 1
<br>
<br>
Here is Message 2
<br>
<br>
Here is Message 2 (again)
<br>
我要做的是返回所有消息2和最近的中断标记之间的文本。以下正则表达式已关闭:
<br>[\s\S]*?Message 2[\s\S]*?<br>
但是,它返回以下两个块。第1区:
<br>
Message 1
<br>
<br>
Here is Message 2
<br>
第2区:
<br>
Here is Message 2 (again)
<br>
但是,我需要块1返回:
<br>
Here is Message 2
<br>
我收到的消息总是以这种方式显示的,因此我并不认为我需要HTML解析器。试试这个正则表达式模式:
<br>((?!<br>)[\s\S])*Message 2((?!<br>)[\s\S])*<br>
我在这里使用的技巧是使用一个否定的前瞻性来调整。*,它断言后面的不是标记标记。换句话说,!*将消耗所有内容,直到下一个标记
作为免责声明,通常我们不应该使用正则表达式来解析HTML数据。有时,我们被迫这样做,例如,如果我们使用的是记事本++之类的编辑器,它没有HTML解析器。工作得非常好!非常感谢。