Java正規表現OR演算子


87

これはばかげた質問かもしれませんが、どこにも見つかりませんでした。

括弧なしでJavaまたは正規表現演算子(|)を使用するにはどうすればよいですか?

例:Tel | Phone | Fax


大丈夫そうです、あなたはどんな問題を抱えていますか?
ダンベン2010年

1
ええ、動作するはずです。cletus、danben、そして私は同意します。また、@ danben-私の名前はDanBeamです、笑、とても近いです!
ダン・ビーム

回答:


154

パイプを単独で使用できます。

"string1|string2"

例えば:

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

出力:

blah, blah, string3

括弧を使用する主な理由は、選択肢の範囲を制限することです。

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

同じ出力があります。しかし、これを行うだけの場合:

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

あなたが得る:

blah, stringblah, string3

「string1」または「2」と言ったからです。

式のその部分をキャプチャしたくない場合は、次を使用します?:

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

これらの文字列を、文字列でもある正規表現の他の部分から区切る必要がある場合はどうなりますか?例eee(ff | gg)eee括弧を使用する必要がありますか?
エリックコナー2010年

ああ、気にしないでください。あなたのアップデートはそれを修正します。最後の例は私が探していたものです。ありがとう!
エリックコナー2010年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.