如何在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()
您不需要开始和结束锚定,因为它总是检查整个字符串。