Регулярное выражение Java и экранирующие метасимволы - PullRequest
3 голосов
/ 24 апреля 2011

Я пытаюсь написать регулярное выражение для сопоставления токена, встроенного в две фигурные скобки. Например, если буфер Hello {World}, я хочу получить токен "World" из String. Когда я использую регулярное выражение типа \{*\}, eclipse показывает сообщения об ошибках как

Неверная escape-последовательность (допустимы \b \t \n \f \r \" \' \\)

Может кто-нибудь помочь мне? Я новичок в использовании регулярных выражений.

Ответы [ 4 ]

5 голосов
/ 24 апреля 2011

Используйте этот код для сопоставления строки между { и }

String str = "if buffer Hello {World}";
Pattern pt = Pattern.compile("\\{([^}]*)\\}");
Matcher m = pt.matcher(str);
if (m.find()) {
    System.out.println(m.group(0));
}
3 голосов
/ 24 апреля 2011

Вы должны быть в состоянии извлечь токен из строки, такой как "{token}", используя регулярное выражение {(\w*)}.Скобки () образуют группу захвата вокруг нуля или более слов, захваченных \w*.Если строка совпадает, извлеките фактический токен из группы захвата, вызвав метод group () класса Matcher.

Pattern p = Pattern.compile("\\{(\\w*)\\}");

Matcher m = p.matcher("{some_interesting_token}");

String token = null;
if (m.matches()) {
 token = m.group();
}

Обратите внимание, что токен может быть пустой строкой, поскольку regex {\ w *} "будет соответствовать "{}". Если вы хотите сопоставить хотя бы один символ токена, используйте вместо него {\ w +}.

1 голос
/ 24 апреля 2011

попробуйте это \\{[\\w]*\\} в Java используйте двойные \ для escape-символов

0 голосов
/ 24 апреля 2011

Вам нужно выйти из {} в регулярном выражении. Просто чтобы извлечь все между скобками, регулярное выражение

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