Регулярное выражение Java: как включить '-' - PullRequest
2 голосов
/ 03 апреля 2010

Я использую этот шаблон и сопоставляю строку.

String s = "//name:value /name:value";
if (s.matches("(//?\\s*\\w+:\\w+\\s*)+")) {
  // it fits
}

Это работает правильно.
Но если я хочу иметь строку типа "/name-or-address:value/name-or-address:value", которая имеет этот '-' во второй части, это не работает.
Я использую \w для соответствия A-Za-z_, но как я могу включить - в это?

Ответы [ 4 ]

5 голосов
/ 03 апреля 2010

Используйте [\w-] для объединения \w и -.

Обратите внимание, что - всегда должен быть в начале или в конце класса символов, иначе он будет интерпретироваться как определение диапазона символов (например, [a-z] - это диапазон символов от a до z, тогда как [az-] - это три символа a, z и -).

0 голосов
/ 03 апреля 2010

Как насчет

 if (s.matches("/(/|\\w|-|:\\w)+")) {
0 голосов
/ 03 апреля 2010

[-\w] (или в строке [-\\w].)

0 голосов
/ 03 апреля 2010

Не знаю, отвечает ли он на ваш вопрос, но почему бы не заменить \ w + на (\ w | -) + или [\ w -] +?

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