Как сопоставить \ Q и \ E в регулярных выражениях Java? - PullRequest
1 голос
/ 19 января 2012

Я хочу сопоставить \Q и \E в регулярном выражении Java. Я пишу программу, которая будет вычислять длину строки, соответствующую шаблону (эта программа предполагает, что в регулярном выражении нет никакого квантификатора, кроме {некоторого числа}, поэтому длина строки определяется уникально), и я хочу сначала удалите все выражения типа \Qsome text\E. Но регулярное выражение, как это:

"\\Q\\Q\\E\\Q\\E\\E"

явно не работает.

Ответы [ 2 ]

4 голосов
/ 19 января 2012

Использование Pattern.quote(...):

String s = "\\Q\\Q\\E\\Q\\E\\E";
String escaped = Pattern.quote(s);
4 голосов
/ 19 января 2012

Просто избежать обратной косой черты.Последовательность \\\\ соответствует литералу с обратной косой чертой, поэтому для соответствия литералу \Q:

"\\\\Q"

и для литерала \E:

"\\\\E"

Вы можете сделать этоболее читабельным для сопровождающего, делая очевидным, что каждая последовательность соответствует одному символу, используя [...] как в:

"[\\\\][Q]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...