用于在嵌套的html标记中捕获特定内容的正则表达式

时间:2012-05-21 16:32:31

标签: html regex tags expression

在这个例子中:

<TR valign=top>
    <TD width=2>Region</TD>
    <TD width=3>number</TD>
</TR>
<TR valign=top>
    <TD width=2>camp</TD>
    <TD width=3>33210</TD>
</TR>

需要正则表达式来查找“region”字并捕获相应的<TR>...Region...</TR> 像这样:<tr [^ <tr]*(region)[^ <tr]*</tr>

1 个答案:

答案 0 :(得分:0)

你可以尝试一下:

<tr(?:(?!</tr>).)+(?:<td[^>]*>Region</td>)(?:(?!</tr>).)*</tr>

基本上:

  • 寻找<tr
  • (?!</tr>后面跟不是结束标记(?!的任何内容都是否定前瞻,断言以下文字不存在
  • .匹配一个字符
  • +重复前瞻并匹配
  • <td[^>]*>Region</td>将该行与'region'匹配
  • (?!</tr>). - 与第2步相同 - 此时可选(*
  • </tr> - 匹配结束标记