2013-07-06 33 views
0

我試圖匹配以單詞邊界結尾的關鍵字。但是,關鍵字是動態的,可能以非單詞字符結尾。可以匹配單詞/非單詞邊界還是非單詞/非單詞邊界?正則表達式捕獲單詞/非單詞和非單詞/非單詞的邊界

因此,例如關鍵字是Hi,我希望它匹配Hi!!Hi Hi但不HiHi。這可以通過Hi\b完成。但是如果關鍵字是Hi!,我希望它匹配Hi!HiHi!!。使用Hi\b的結果不匹配。

任何方向表示讚賞。

+0

我不明白。如果關鍵字是'Hi',則使用'Hi \ b';如果它是'Hi!',請使用'Hi!'。有什麼問題? – ruakh

+0

@ruakh我_think_關鍵字存儲在一個變量中,如果將\ b添加到變量中,您還將\ b添加到潛在的「Hi!」中。但是,我不能說我理解這些限制背後的原因。 – Jerry

+1

你使用哪種語言或工具正則表達式? –

回答

0

您可以捕捉字非字字符

>>> /[\w]+[\W]/.test('hi!') 
true 
>>> /[\w]+[\W]/.test('hihi') 
false 

或者使用邊界符號捕獲性狀改變成非單詞:

>>> /[\w]+\b/.test('hi!') 
true 
>>> /[\w]+\b/.test('hihi') 
false 

或者乾脆用字符組。

請注意,邊界符號是零長度值。 有一個很好的網站,詳細解釋它:Regex tutorials

相關問題