Как найти вторую половину шаблона? - PullRequest
1 голос
/ 11 января 2010

Я пытаюсь найти вторую половину паттернов следующего шаблона:

foo/BAR 

«Бар» - это тот, который я пытаюсь найти. Я пробовал что-то вроде:

\b(foo)/([a-zA-Z]+)

Это отлично работает, но также соответствует http://foo/BAR - что мне не нужно.

Я тоже пытался

\\s(foo)/([a-zA-Z]+)

но это не совпадает, когда строка начинается с foo / BAR. (Я использую java.util.regex)

Ответы [ 4 ]

4 голосов
/ 11 января 2010
(^|\s)foo/([a-zA-Z]+)
3 голосов
/ 11 января 2010

Если вы определяете полный токен "foo / BAR" как предшествующий, так и сопровождаемый пробелом (или начало / конец строки)

т.е. он найдет "abc", "XyZ" и "def" в

"foo/abc 123 hhh foo/XyZ http://foo/BAR foo foo/ foo/ghi% foo/def"

тогда хочешь

(?:^|\s)foo/([a-zA-Z]+)(?:$|\s)
1 голос
/ 11 января 2010

\ b - граница слова, ^ - начало маркера строки

^foo/(\w+)
1 голос
/ 11 января 2010

Как насчет

^(foo)/([a-zA-Z]+)

или

(?<!http://)(foo)/([a-zA-Z]+)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...