正则表达式匹配除一种格式

时间:2017-08-04 10:41:57

标签: regex

这是字符串:

  

$$ START $$应与$$ MIDDLE $$匹配

     

$$ NOTMATCH $$这不应该匹配

     

$$ LAST $$这应匹配

在上一段中,我需要构建一个可以匹配所有关键字($$ [a-zA-Z] $$)的正则表达式,除了$$ NOTMATCH $$

到目前为止,我已经尝试了(?!\$\$NOTMATCH\$\$)(\$\$([^\$\$]+)\$\$)但它没有正常工作,并且没有考虑关键字末尾的$$符号,演示here

欢迎任何建议。

提前致谢

1 个答案:

答案 0 :(得分:1)

  

我需要构建一个可以匹配除($$[a-zA-Z]$$)之外的所有关键字$$NOTMATCH$$的正则表达式

你可以在中间使用负向前瞻:

(?<!\$)\$\$(?!NOTMATCH)[^$\s]+\$\$(?!\$)

RegEx Demo

    如果(?!NOTMATCH)字符之间有NOTMATCH,则
  • $$为否定匹配将导致匹配失败。
  • (?<!\$)为负面观察,以确保我们在比赛前没有$
  • (?<\$)是负面的预测,以确保我们在比赛结束后没有$