【问题标题】:All phrases except in a tag - regexpr除标签外的所有阶段 - 正则表达式
【发布时间】:2017-05-31 11:26:56
【问题描述】:

我想创建一个正则表达式来标记除A 标记之外的所有短语。 我想用它来替换它的链接。 我可以用一个正则表达式来添加它吗? 这是我失败的试验:https://regex101.com/r/3I2qvL/1

【问题讨论】:

  • 这是一个可行的 hacky 解决方案:(?:<a.*?<\/a>)\K|(TEST)。演示:regex101.com/r/3I2qvL/2。确保你丢弃空匹配:)
  • @degant 要摆脱空匹配项,您可以使用 skip&fail 技巧/<a.*?<\/a>(*SKIP)(*FAIL)|\btest\b/i。见demo
  • 感谢@HamZa,这是一个巧妙的技巧。我不明白为什么在*FAIL 之前需要*SKIP
  • @degant check this answer out
  • @degant check this page out

标签: regex preg-replace preg-match preg-match-all


【解决方案1】:

要排除标记包围的匹配项,首先匹配标记部分,然后将其与\K 一起丢弃。此匹配项还应通过交替提供空字符串以匹配不以标记开头的子字符串:

(?:<a[^>]+>.*?<\/a>\K|)(^|\s|,|;|:|\.)(Test)($|\s|,|;|\.|\b)

演示:https://regex101.com/r/pUPBQQ/1

【讨论】:

    猜你喜欢
    • 2011-05-15
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多