Оператор регулярного выражения Java ИЛИ - PullRequest
75 голосов
/ 09 января 2010

Это может быть глупый вопрос, но я нигде не смог его найти:

Как использовать оператор регулярного выражения java (|) без скобок?

Например: Tel| Телефон | Факс

1 Ответ

134 голосов
/ 09 января 2010

Вы можете просто использовать трубу самостоятельно:

"string1|string2"

например:

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string1|string2", "blah"));

Выход:

blah, blah, string3

Основная причина использования скобок заключается в ограничении объема альтернатив:

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(1|2)", "blah"));

имеет такой же вывод. но если вы просто сделаете это:

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string1|2", "blah"));

вы получите:

blah, stringblah, string3

потому что вы сказали "string1" или "2".

Если вы не хотите захватывать эту часть выражения, используйте ?::

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(?:1|2)", "blah"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...