2017-08-04 57 views
0

这里是字符串:正则表达式匹配所有文字格式,除了一个格式

$$ START $$应$$ MIDDLE $$

$$ NOTMATCH $$,这不应该被沿着匹配匹配

$$ LAST $$这应该被匹配

在上述段落中,我需要建立一个正则表达式,其可匹配的所有关键字($$ [A-ZA-Z] $$)不包括$$ NOTMATCH $$

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

欢迎任何建议。

在此先感谢

+0

这取决于什么字符可以在$$之间。如果只是字母,那么['\ $ \ $(!!NOTMATCH \ $)([a-zA-Z] +)\ $ \ $'](https://regex101.com/r/2Mkk9w/2) –

回答

2

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

可以使用负前瞻中间,因为这:

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

RegEx Demo

  • (?!NOTMATCH)是负面的前瞻,如果我们有NOTMATCH$$字符之间将会失败。
  • (?<!\$)是负面后视,以确保我们在比赛前没有$
  • (?<\$)是否定的前瞻以确保我们在比赛结束后没有$
+0

是的,但它也会匹配$ START $和$$$ START $$$ :( – shanu

+1

在这种情况下使用:'(?<!\ $)\ $ \ $(?! NOTMATCH)[^ $ \ s] + \ $ \ $(?!\ $)' – anubhava