Expression régulière OU opérateur Java


C'est peut-être une question stupide, mais je ne la trouvais nulle part:

Comment puis-je utiliser l'opérateur java OU d'expression régulière (|) sans parenthèses?

Par exemple: Tél|Téléphone / Télécopie

Author: Eric Conner, 2010-01-09

1 answers

Vous pouvez simplement utiliser le tuyau seul:

"string1|string2"

Par exemple:

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

Sortie:

blah, blah, string3

La principale raison d'utiliser des parenthèses est de limiter la portée des alternatives:

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

A la même sortie. mais si vous faites simplement ceci:

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

Vous obtenez:

blah, stringblah, string3

Parce que vous avez dit "string1" ou "2".

Si vous ne voulez pas capturer cette partie de l'expression, utilisez ?::

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(?:1|2)", "blah"));
 123
Author: cletus, 2010-01-09 00:57:04