Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用正则表达式对相似的单词进行字符串比较?_Java_Regex - Fatal编程技术网

如何在Java中使用正则表达式对相似的单词进行字符串比较?

如何在Java中使用正则表达式对相似的单词进行字符串比较?,java,regex,Java,Regex,我有两根绳子 String x = "DMXX"; //or DMYY or DMZZ 我想检查一下平等性 早些时候我是这样做的 if(x.equals("DMXX") || x.equals("DMYY") || x.equals("DMZZ")){ //Do this and that } 而不是三种不同的说法;我想一次完成它 在上述情况下,字符串“DM”对所有人都是通用的;唯一的变更是XX/YY/ZZ 正则表达式的语法是什么,使其成为一条语句而不是两条语句 另外,还有一个问题:Gu

我有两根绳子

String x = "DMXX"; //or DMYY or DMZZ
我想检查一下平等性

早些时候我是这样做的

if(x.equals("DMXX") || x.equals("DMYY") || x.equals("DMZZ")){
  //Do this and that
}
而不是三种不同的说法;我想一次完成它

在上述情况下,字符串“DM”对所有人都是通用的;唯一的变更是XX/YY/ZZ

正则表达式的语法是什么,使其成为一条语句而不是两条语句

另外,还有一个问题:Guava或ApacheCommons是否具有实现相同功能的功能

if (x.matches("DM(?:XX|YY|ZZ)") {
    // Do whatever
}
编辑1:您当然可以将字符
DM
XX
YY
ZZ
更改为您需要的任何字符,并注意
XX
和朋友的长度不必相同。例如,对于
DM1234
DM2
,regex
“DM(?:1234 | 2 | ZZ)
将正常工作


编辑2-3:正如塞巴斯蒂安·普罗斯克(Sebastian Proske)和蜘蛛鲍里斯(Boris the Spider)所评论的,与教程让我相信的不同,
String.matches
确实匹配正则表达式,就好像它有锚一样(就好像它已经以
^
开始,以
$
结束),所以这些都不是必需的。这将教会我阅读教程,而不是反复检查^^

x.matches(“DD(?:XX | YY | ZZ)”)
。您可以拉出
模式
并重新使用它以提高速度。您还可以重复使用
匹配器
以提高速度。说:在他们之间插一根管子。你已经把你的问题从一个完全合理的问题变成了一个不清楚的问题,加上一个类似的问题。你希望Guava或Apache Commons会带来什么?考虑到Java API?@BoristheSpider:中的一个方法调用,在项目中已经遵循的编码标准中,它们甚至不使用string.equals,而是使用StringUtils.equals。所以这只是附加查询。我可能会添加
StringUtils.equals
与JDK中的
Objects.equals
相同。要求使用早已被JDK功能取代的第三方功能是完全错误的-我建议进行坦率的讨论。我们可以使用Apache commons的StringUtils或任何其他Gauva库来实现吗?请添加代码作为答案。添加描述too@fatherazrael通过一次方法调用,您希望从外部库中获得什么?如果纯Java提供了
匹配
方法并满足您的需要,那么使用StringUtils有什么意义?@Nadia如果使用
.matches()
您不需要开始和结束锚定,因为它总是检查整个字符串。