Operator OR wyrażenia regularnego Java


87

To może być głupie pytanie, ale nie mogłem go nigdzie znaleźć:

Jak mogę użyć operatora wyrażenia regularnego java OR (|) bez nawiasów?

np .: Tel | Telefon | Faks


Wygląda dobrze, jaki masz problem?
danben

1
tak, powinno działać. cletus, danben i ja zgadzamy się. także @danben - nazywam się Dan Beam, lol, tak blisko!
Dan Beam,

Odpowiedzi:


154

Możesz po prostu użyć samej rury:

"string1|string2"

na przykład:

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

Wynik:

blah, blah, string3

Głównym powodem używania nawiasów jest ograniczenie zakresu alternatyw:

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

ma ten sam wynik. ale jeśli po prostu to zrobisz:

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

dostajesz:

blah, stringblah, string3

ponieważ powiedziałeś „ciąg1” lub „2”.

Jeśli nie chcesz przechwytywać tej części wyrażenia, użyj ?::

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

A jeśli muszę oddzielić te ciągi od innych elementów wyrażenia regularnego, które również są ciągami? np. eee (ff | gg) eee Czy muszę używać nawiasów?
Eric Conner,

Ah nie ważne. Twoja aktualizacja to naprawia. Ostatni przykład jest tym, czego szukałem. Dzięki!
Eric Conner,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.