Que faire si je dois délimiter ces chaînes des autres morceaux de l'expression régulière qui sont également des chaînes? par exemple eee (ff | gg) eee Dois-je utiliser des parenthèses?
Eric Conner
Ah laisse tomber. Votre mise à jour le corrige. Le dernier exemple est ce que je cherchais. Merci!
Réponses:
Vous pouvez simplement utiliser le tuyau seul:
"string1|string2"
par exemple:
String s = "string1, string2, string3"; System.out.println(s.replaceAll("string1|string2", "blah"));
Production:
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 juste ceci:
String s = "string1, string2, string3"; System.out.println(s.replaceAll("string1|2", "blah"));
vous obtenez:
parce que vous avez dit "string1" ou "2".
Si vous ne souhaitez pas capturer cette partie de l'expression, utilisez
?:
:String s = "string1, string2, string3"; System.out.println(s.replaceAll("string(?:1|2)", "blah"));
la source