Java normal ifadesi VEYA operatörü


89

Bu aptalca bir soru olabilir ama hiçbir yerde bulamadım:

Java VEYA normal ifade operatörünü (|) parantez olmadan nasıl kullanabilirim?

örneğin: Tel | Telefon | Faks


İyi görünüyor, ne problemin var?
danben

1
evet, çalışmalı. cletus, danben ve ben de aynı fikirdeyim. ayrıca, @danben - benim adım Dan Beam, lol, çok yakın!
Dan Beam

Yanıtlar:


156

Boruyu kendi başına kullanabilirsiniz:

"string1|string2"

Örneğin:

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

Çıktı:

blah, blah, string3

Parantez kullanmanın ana nedeni, alternatiflerin kapsamını sınırlamaktır:

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

aynı çıktıya sahiptir. ama sadece bunu yaparsan:

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

alırsın:

blah, stringblah, string3

çünkü "dize1" veya "2" dediniz.

İfadenin o kısmını yakalamak istemiyorsanız şunu kullanın ?::

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

Bu dizeleri normal ifadenin aynı zamanda dize olan diğer parçalarından ayırmam gerekirse ne olur? eee (ff | gg) eee Parantez kullanmam gerekiyor mu?
Eric Conner

Boşver gitsin. Güncellemeniz onu düzeltir. Son örnek aradığım şeydi. Teşekkürler!
Eric Conner
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.