查找未闭合标签的正则表达式

问题描述 投票:0回答:1

我正在尝试查找存在于

'
<
之间的孤儿
>
,无论是在同一行还是在下一行或之后的结束
>
中。

我对此有点陌生,我尝试过像

<.*?'.*>
这样的惰性搜索,但我无法让它工作。

或者另一种搜索方式可能是查找

'
之间具有任意奇数个
< >
的行。

因此在 grepWin 或 NP++ 上它应该匹配如下行:

<p class="quote" style=' ; dir='ltr'>

但不是:

<p class="quote" style='indent' ; dir='ltr'>

html regex tags
1个回答
0
投票

您可以使用此正则表达式来匹配这些标签:

<(?!(?:[^'">]|'[^']*'|"[^"]*")+>)[^>]*>

它匹配:

  • <
    :字面意思
    <
  • (?!
    :对
  • 的否定前瞻
  • (?:[^'"]|'[^']*'|"[^"]*")+>
    :其中一项或多项
    • [^'">]
      :不是单引号、双引号或
      >
    • 的字符
    • '[^']*'
      :单引号字符串
    • "[^"]*"
      :双引号字符串
  • [^>]*>
    :一些非
    >
    字符,后跟
    >

负向前瞻寻找格式正确的标签,其中所有引号都是平衡的。然后,正则表达式的最后一部分与

>
之后的下一个
<
匹配。

regex101 上的正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.