如何忽略正则表达式中的转义字符?

时间:2013-07-20 22:19:47

标签: java regex

我有以下正则表达式匹配以'+'开头的文字的所有单词。

Pattern.compile("\\+[\\w-]+");

效果很好,将"+Foo or +Bar""+Foo""+Bar"相匹配。

如何扩展正则表达式以忽略以转义'+'开头的单词 - char?

"+Foo or +Bar but no \\+Hello"应该与"+Foo""+Bar" 匹配,但不能与"+Hello" 匹配。

(它适用于JDK1.7。)

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:15)

您可以尝试negative lookbehind

(?<!\\(\\{2})*)\+[\w-]+

一般情况下,(?<!Y)X会匹配X前面没有Y的{​​{1}}。

答案 1 :(得分:4)

您可以使用负面观察

Pattern.compile("(?<!\\\\)\\+[\\w-]+");

答案 2 :(得分:3)

Java支持有限长度的后视,所以这应该有效:

"(?<!\\\\)\\+[\\w-]+"

http://www.regular-expressions.info/lookaround.html