У меня есть следующее регулярное выражение: (["'])(\\\1|[^\1])+\1
(["'])(\\\1|[^\1])+\1
Очевидно, что оно не может быть скомпилировано, потому что [^\1] является illeagal.
[^\1]
Можно ли отрицать соответствующую группу?
Вы не можете использовать обратные ссылки в классе положительных или отрицательных символов.
Но вы можете достичь того, чего хотите, используя отрицательные прогнозные утверждения :
(["'])(?:\\.|(?!\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.