2017-07-06 27 views
0

可以說我有這個字符串開始匹配字:正則表達式:只有當它不以一個點

鍵something.key()(.KEY)(密鑰)

我想正則表達式來只匹配單詞 「鍵」 是內部 「[]」

[鍵] something.key()(.KEY)([鍵])

我已經使用這個正則表達式當前/(?!\.)key/g

但是,它只排除點並且仍然選擇單詞,即使它以點開始。

+0

我應該更清楚。我只想匹配單詞「單詞」而不是單詞「某事」。 (^ | [^ \。])(鍵) – Elias

+0

(2)它只會匹配「key」 – Derek

+0

問題是它也匹配「(鍵」,而我希望它只匹配「鍵」 – Elias

回答

0

使用排除字符類匹配不是一個點

[^\.]

然後加入^匹配不是一個點字符串的開頭:

([^\.]|^)

?:添加到組中以使其不捕獲。

(?:[^\.]|^)

最後添加捕獲組匹配你的話:

(?:[^\.]|^)(word)

你可以使用負向後看達到同樣的效果:

(?<!\.)word

唉, JavaScript正則表達式沒有實現它。

+0

這是一個進步,但它也造成了另一個問題,我也遇到:正則表達式(?:[^ \。] | ^)(單詞)將選擇「(單詞」作爲匹配,我希望它只選擇「單詞」或者如果一個字符串包含「/單詞」,則正則表達式將選擇整個「/單詞」而不僅僅是「單詞」 – Elias

+0

這就是爲什麼「單詞」在一個捕獲組中,不要使用整個匹配。第一個捕獲組 - 它不會包含「word」之前的字符。 –

+0

這是一個演示:https://jsfiddle.net/ft2o3apL/6/ –

相關問題