Регулярное выражение или оператор Java


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

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

Эл.г: Тел / Телефон / Факс

1 72

1 ответ:

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

"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"));