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.