81 votes

Expression régulière Java opérateur OU

Ceci peut être une question idiote, mais je ne l'ai trouvé nulle part :

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

par exemple: Tel|Phone|Fax

143voto

cletus Points 276888

Vous pouvez simplement utiliser le pipe 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"));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X