2017-08-23 63 views
1

我知道有幾個類似的問題已經提出。但不能用正則表達式解決這個問題。用正則表達式忽略一個單詞

我有一個像

Lorem存有句話是http://stack.com/wp-admin 印刷排版行業http://stack.com文本。

我想緩存單詞「stack.com」但不stack.com/wp-admin

我已經試過幾個正則表達式,但它不工作。

^(?!stack.com$).* 
+0

@anubhava然後,如果'stack.com'後跟一個逗號,它將不會匹配。 –

+0

好吧然後可能:'\ bstack \ .com(?![/?])' – anubhava

回答

1

^(?!stack.com$).*正則表達式不與stack.com啓動任何字符串(即使是空的)相匹配。

要匹配stack.com但裏面stack.com/wp-admin,你需要一個負前瞻:

/stack\.com(?!\/wp-admin)/ 
      ^^^^^^^^^^^^^ 

或更好,具有字邊界僅匹配整個話:

/\bstack\.com\b(?!\/wp-admin)/ 

regex demo

詳情

  • \b - 領先字邊界
  • stack\.com - 文字字符串stack.com(點必須進行轉義)
  • \b - 拖字邊界
  • (?!\/wp-admin) - 失敗的負前瞻如果立即在當前位置的右側存在/wp-admin,則匹配。
+0

我不認爲人們需要前瞻。鑑於上面的問題可以簡單地檢查:「stack \ .com $」 - 特別注意結尾空格字符。 – blauerschluessel

+0

@blauerschluessel我認爲OP想在'stack.com上匹配'stack.com',你可以瞭解更多......'。所以,帶有前瞻的單詞邊界看起來是可行的。 –

+0

當然,它確實如此。 – blauerschluessel