嵌套html标记的问题

  • 本文关键字:问题 html 嵌套 regex
  • 更新时间 :
  • 英文 :


我有regex,它可以搜索html<h>族标记,但如果<h>中有任何其他标记,则不起作用。请参阅以下示例。

<h([d]).*>s*[d]*s?[.]?s?([^<]+)</h([d])>

它工作

<h2 style="margin-top:1em;">What is Python?</h2>

它不起作用

<h2 style="margin-top:1em;">Python Jobs<span class="blink">New!</span></h2>

如何将此Python Jobs<span class="blink">New!</span>捕获为第二组?需要3个捕获组——h2的2、作为第二组的Python Jobs<span class="blink">New!</span>和关闭h2的2

([^<]+)表示在</h2>之前匹配除<之外的任何的序列。由于嵌套标签包含<字符,因此这与它们不匹配。

使用.+?来匹配标记的内容。?使其不贪婪,因此当它到达第一个</h#>时将停止。

您也可以在匹配的</h#>部分使用反向引用,因此结束标记将强制与开始标记匹配。

<h(d).*?>s*d*s?.?s?(.+?)</h(1)>

顺便说一句,没有必要把d放在[]里面。

最新更新