2016-09-16 82 views
1

我想讓我的正則表達式匹配一個模式,前提是前面沒有字符^(迴音符)。匹配模式前面沒有字符

我的正則表達式: /[^\^]\w+/g

文本測試它: Test: ^Anotherword

匹配: 「測試」 和 「Anotherword」,即使後者由前抑揚。我試圖通過在開始時插入[^\^]來阻止。所以我不僅試圖與旋律不匹配,而且還試圖追隨它。 「另一個字」不應該匹配。

[^\^] - 這是什麼應該阻止正則表達式匹配,如果重音circonflexe在它前面。

\w+ - 匹配任何前面沒有加入旋律的詞。

由於JavaScript限制,我無法使用lookbehind。

+0

'([^^] | ^)\ w +'那麼如果需要的話,在替換時寫回'$ 1'。不,它的工作,但它匹配'T',然後'EST' – sln

+0

這似乎並不奏效,我做錯了什麼? http://regexr.com/3e855 –

+0

使用'([^^ \ w] | ^)\ w +'參見http://regexr.com/3e85b它基本上構成了一個字邊界。 – sln

回答

1

使用([^^\w]|^)\w+
(見http://regexr.com/3e85b

它基本上是注入一個字邊界,而排除了^爲好。
[^\w] = \W\b\w

否則[^^]將匹配一個 '^ T'
\w+將匹配est

如果您在其周圍放置捕獲組,則可以看到它。

+0

用於此'/([^^ \ - \。\ d])(\ - ?(\ d + \。)?\ d + \ * \ - ?(\ d + \。)?\ d +)/ g',這是我真正想要工作的東西,它可以用你的解決方案。它雖然沒有添加'| ^',你能解釋一下嗎? –

+1

當然,在JS中,當使用'(something | ^)'代替逆序時,它會從字符串/行開頭讀取_OR_。讓它在沒有任何字符的開始處匹配。這可以模擬,例如,負面的後顧之處,'(?<!A)',其中行'^'的開始將被滿足。 – sln

0

的解釋。如果匹配不嚴格禁止的。

(?:\^\w+)|(\w+):匹配兩個表達式,但沒有爲^Anotherworld生成組。

  • (?:\^\w+):匹配^Kawabanga但未生成組。
  • (\w+):其他所有的分組。

我想要你的情況^Anotherworld只能刪除一個組?:

+0

這將工作我不能使用負回顧後說,但我真的尋找的東西,止跌」 (^^Anotherword') –