2016-11-28 65 views
-1

我很笨,請幫我構造一個正則表達式。我需要它匹配文本中的所有字符串hi,但不匹配單詞highhill。我需要使用這個正則表達式來掃描大量文件中的文本,這些文件包含文字highhill,我只需要找到包含另一個字母的文件,其中包含字母hi如何忽略正則表達式中的文本

hi how are you <- MATCH 
abc hiabc <- MATCH 
abc high abc <- NOT MATCH 
hill abc hi <- MATCH 
hill abc high <- NOT MATCH 
high abc hill abc chip <- MATCH 
+1

使用[word boundaries](http://www.regular-expressions.info/wordboundaries.html)然後。 – Xufox

+0

如果支持,使用字邊界'\ b'。什麼語言? – chris85

+1

'不匹配單詞「高」和「山」'和高abc山abc芯片< - MATCH',爲什麼? – chris85

回答

2

試試這個正則表達式:

hi(?!gh|ll) 

負先行(?!)將允許你只hillhigh按照您的要求排除,但它會匹配這樣的任意換句話說作爲hiabc

演示: https://regex101.com/r/sVDXTq/1

+0

@ chris85是的,我想他想匹配'phi'。如果你讀到這個問題,他想要匹配的最後一個例子是「芯片」這個詞,因爲這個詞包含「hi」 – Ibrahim

+0

是的,我重讀了問題並刪除了評論。問題仍然不清楚。取決於正則表達式的使用位置,這可能不被支持。 – chris85

+0

@ chris85是的,我想這是一種可能性。他沒有包含正則表達式的味道。 LookAhead比LookBehind更受支持,所以讓我們希望這對他有用。 – Ibrahim