2017-08-04 65 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