2017-07-27 131 views
1

我想匹配啓動任何字/兩端或不包含與「結束」這個詞,但忽略詞「結束」,例如:正則表達式 - 匹配任何字,但忽略特定的單詞

  • 你好 - 將匹配
  • 男友 - 將匹配
  • 無盡 - 將匹配
  • endend - 將匹配

  • 結束 - 將比賽

我使用^(?!end)).*$但它不是我想要的。

對不起,我的英語

+2

等待。你只是想排除'end'這個詞本身?所有其他的應該匹配? –

+0

是的,先生,這可能嗎? – moebarox

回答

1

試試這個:

^(?!(end)$).+$ 

這將匹配除了結束一切。

+2

只是一個修改。你應該使用'。+'而不是'。*'。因爲'。*'將匹配零寬度。 – Rahul

+1

@Rahul好點..感謝您通知 – NID

+1

@downvoter一個理由會很好。 – NID

1

所以你想匹配任何單詞,但不是「結束」?

除非我的誤解,一個條件語句是需要的一切......在僞代碼:

if (word != "end") { 
    // Match 
} 

如果你想匹配的文本未「結束」的所有單詞您可以刪除所有非alpha字符,用空字符串替換(^end | end | end$),然後執行字符串拆分。 其他答案與單個正則表達式可能會更好,因爲regex matches are O(n),無論是模式。

0

您可以使用此\b(?!(?:end\b))[\w]+

組件: \b - >每個字的字邊界開始。 (?!消極向前消除單詞結束(?:end\b)非捕獲帶有單詞結束和單詞邊界的括號。 )負向預覽的結束標記。 [\w]+捕捉單詞的字符類。

說明:正則表達式搜索將僅查找以字邊界開始的位置,並將僅刪除與結尾相匹配的唯一字。即[WORD BOUNDARY]end[END OF WORD BOUNDARY]\w將捕獲其餘的單詞。如果您希望捕獲一些特殊字符(如$等),則可以繼續增加此字符類。

相關問題