11

「+」で始まるテキストのすべての単語に一致する次の正規表現があります。

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

これはうまく機能し、 と に一致し"+Foo or +Bar"ます。"+Foo""+Bar"

エスケープされた「+」文字で始まる単語を無視するように正規表現を拡張するにはどうすればよいですか?

"+Foo or +Bar but no \\+Hello""+Foo"はandに一致する必要がありますが、 には一致し"+Bar" ません"+Hello"

(JDK1.7で動作するはずです。)

助けてくれてありがとう!

4

3 に答える 3

15

否定的な後読みを試すことができます:

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

一般に、が前に付いていない(?<!Y)Xan に一致します。XY

于 2013-07-20T22:22:23.803 に答える
4

否定後読みを使用できます。

Pattern.compile("(?<!\\\\)\\+[\\w-]+");
于 2013-07-20T22:22:09.367 に答える
3

Java は有限長の後読みをサポートしているため、これは機能するはずです。

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

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

于 2013-07-20T22:27:46.637 に答える