Java正则表达式或运算符

Java正则表达式或运算符,java,regex,Java,Regex,这可能是个愚蠢的问题,但我在任何地方都找不到: 如何在没有括号的情况下使用java或正则表达式运算符(|) e、 g: 电话传真你可以自己使用管道: "string1|string2" 例如: String s = "string1, string2, string3"; System.out.println(s.replaceAll("string1|string2", "blah")); 输出: blah, blah, string3 使用括号的主要原因是为了限制备选方案的范围: St

这可能是个愚蠢的问题,但我在任何地方都找不到:

如何在没有括号的情况下使用java或正则表达式运算符(|)

e、 g:
电话传真你可以自己使用管道:

"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"));

看起来不错,你有什么问题?是的,应该可以。克莱特斯、丹本和我都同意。还有,@danben-我的名字是danbeam,哈哈,好险啊!若我需要将这些字符串和正则表达式的其他片段(也是字符串)分隔开来,该怎么办?e、 我必须用括号吗?啊,不用了。你的更新修复了它。最后一个例子就是我要找的。谢谢