Ekspresi reguler Java OR operator


89

Ini mungkin pertanyaan yang bodoh, tetapi saya tidak dapat menemukannya di mana pun:

Bagaimana cara menggunakan java OR operator ekspresi reguler (|) tanpa tanda kurung?

misalnya: Tel | Telepon | Faks


Oke, masalah apa yang Anda alami?
danben

1
ya, harus bekerja. cletus, danben, dan saya setuju. juga, @danben - nama saya Dan Beam, lol, sangat dekat!
Dan Beam

Jawaban:


156

Anda bisa menggunakan pipa itu sendiri:

"string1|string2"

sebagai contoh:

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

Keluaran:

blah, blah, string3

Alasan utama menggunakan tanda kurung adalah untuk membatasi ruang lingkup alternatif:

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

memiliki keluaran yang sama. tetapi jika Anda hanya melakukan ini:

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

Anda mendapatkan:

blah, stringblah, string3

karena Anda telah mengatakan "string1" atau "2".

Jika Anda tidak ingin menangkap bagian ekspresi tersebut, gunakan ?::

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

Bagaimana jika saya perlu membatasi string ini dari bagian regex lain yang juga merupakan string? mis. eee (ff | gg) eee Apakah saya harus menggunakan tanda kurung?
Eric Conner

Ah tidak apa-apa. Pembaruan Anda memperbaikinya. Contoh terakhir adalah apa yang saya cari. Terima kasih!
Eric Conner
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.