【问题标题】:Match regex only if not part of hyperlink仅当不是超链接的一部分时才匹配正则表达式
【发布时间】:2019-10-06 15:35:52
【问题描述】:

只有当它不是超链接的一部分时,我才需要 RegEx 来匹配文本。但可以是

的一部分

标签

例如

<p>
bla bla bla textToMatch blabla
</p>

将匹配 textToMatch

但是

<a href="http://www.google.com" alt="textToMatch">bla textToMatch</a>

会被忽略

尝试了许多文章来解决这个问题,但没有运气

【问题讨论】:

标签: regex hyperlink


【解决方案1】:

试试下面的正则表达式:

<[^\/a] *[^>]*>[^<]*(textToMatch)

详情:

  • &lt; - &lt;(字面意思)- 标签的开始,
  • [^\/a] - 除了a(排除anchor标签)或/(排除任何结束标签)
  • * -(空格和星号)- 可选空格,
  • [^&gt;]*&gt; - 除了&gt;(开始标记的内部部分)和&gt;(结束开始标记)之外的可能为空的字符序列,
  • [^&lt;]* - 除了&lt;(没有其他开始/结束标签)之外的可能为空的字符序列,
  • (textToMatch) - 作为捕获组匹配的文本。

这样匹配的“前面的东西”作为匹配的主体, 但您实际要匹配的文本位于第 1 组捕获中。

“前面的东西”不能作为任何后视包含在内,因为 lookbehind 必须有一个固定长度。

有关工作示例,请参阅https://regex101.com/r/MKf2y7/1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多