Возможно ли отрицание группы Java RegExp? - PullRequest
5 голосов
/ 15 марта 2012

У меня есть следующее регулярное выражение: (["'])(\\\1|[^\1])+\1

Очевидно, что оно не может быть скомпилировано, потому что [^\1] является illeagal.

Можно ли отрицать соответствующую группу?

1 Ответ

4 голосов
/ 15 марта 2012

Вы не можете использовать обратные ссылки в классе положительных или отрицательных символов.

Но вы можете достичь того, чего хотите, используя отрицательные прогнозные утверждения :

(["'])(?:\\.|(?!\1).)*\1

Объяснение:

(["'])    # Match and remember a quote.
(?:       # Either match...
 \\.      # an escaped character
|         # or
 (?!\1)   # (unless that character is identical to the quote character in \1)
 .        # any character
)*        # any number of times.
\1        # Match the corresponding quote.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...