Java 正则表达式 OR 运算符

标签 java regex

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

如何使用不带括号的 java OR 正则表达式运算符 (|)?

例如: 电话|电话|传真

最佳答案

您可以单独使用管道:

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

关于Java 正则表达式 OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2031805/

相关文章:

java - 验证 vaadin 组合框自定义输入(仅限整数)

java - 通知后控制不返回到等待线程

JavaPreparedStatement设置NULL参数

python - 如何使用python从列表中读取数据并将特定值索引到Elasticsearch中?

regex - Postgres 中的正则表达式查找和替换

java - 如何从Java中的文本文件打印出链接列表

java - 如何将二维数组的每个 int 元素转换为字符串?

javascript - 验证月份的正则表达式

java - 用于匹配字符串中分隔符内的任何字符的正则表达式

javascript - javascript中的正则表达式转义反斜杠