2016-09-16 57 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') –