Java Regex для сопоставления строки в кавычках с экранированными кавычками - PullRequest
7 голосов
/ 23 марта 2010

Я знаю, что уже есть много вопросов, подобных моему, но я не нашел ответа, который работает на Java.Поэтому я пишу новый вопрос.

У меня есть текстовые файлы с таким содержимым:

key1 = "This is a \"test\" text with escapes using '\\' characters";
key2 = 'It must work with \'single\' quotes and "double" quotes';

Мне нужно регулярное выражение, которое соответствует значениям в двойных или одинарных кавычках).Это регулярное выражение должно поддерживать экранированные кавычки и экранированные обратные слэши.Регулярное выражение должно работать со стандартными классами Java Pattern / Matcher.

1 Ответ

8 голосов
/ 23 марта 2010

Попробуйте это регулярное выражение:

'([^\\']+|\\([btnfr"'\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*'|"([^\\"]+|\\([btnfr"'\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*"

И как строковый литерал:

"'([^\\\\']+|\\\\([btnfr\"'\\\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*'|\"([^\\\\\"]+|\\\\([btnfr\"'\\\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*\""
...