Operador OR de expresión regular de Java

Esta puede ser una pregunta tonta, pero no pude encontrarla en ninguna parte:

¿Cómo puedo usar el operador java O expresión regular (|) sin paréntesis?

Ej .: Tel | Teléfono | Fax

Puedes usar la tubería solo:

"string1|string2" 

por ejemplo:

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

Salida:

 blah, blah, string3 

La razón principal para usar paréntesis es limitar el scope de las alternativas:

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

tiene el mismo resultado pero si solo haces esto:

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

usted obtiene:

 blah, stringblah, string3 

porque has dicho “cadena1” o “2”.

Si no quiere capturar esa parte de la expresión, use ?: ::

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