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

时间:2016-09-27 06:04:41

标签: 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。

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

另外,还有一个问题:Guava或Apache Commons是否有一些功能可以实现相同的功能?

1 个答案:

答案 0 :(得分:2)

for( i in value){ 
    //console.log(value[i], i)
    var output = '';
    var outcome = '';
    var str = value[i];
    for(j in str){
        loopColumns(str[j], function(err,res){
            if(outcome=='') outcome= res;
            else outcome= outcome+' , '+res;
            console.log(outcome);
        })

    }

    var output = i+' : '+outcome+' \n';
    console.log('output \n'+output);
};

编辑1:您当然可以将字符if (x.matches("DM(?:XX|YY|ZZ)") { // Do whatever } DMXXYY更改为您需要的内容,并注意ZZ和朋友不必长度相同。例如,使用XXDM1234,正则表达式DM2将正常工作。

编辑2-3:正如Sebastian Proske和Boris the Spider评论的那样,并不像教程让我相信的那样,"DM(?:1234|2|ZZ)"确实匹配正则表达式,就好像它有锚点一样(好像它已经以{开头) {1}}以#{1}}结尾,因此不需要。{1}}这将教会我阅读教程而不是仔细检查。 ^^