如果匹配II,III,IV,V,VI,VII,VIII,ESQ,JR,SR,则删除后缀中的最后一个单词

时间:2015-07-27 06:06:57

标签: java regex

我必须做这样的事情:对于名字字段,如果字段由两个或多个单词组成,如果最后一个单词由以下之一组成,则将最后一个单词删除到后缀字段中:II,III, IV,V,VI,VII,VIII,ESQ,JR,SR。我试过用java模式匹配我的代码是:`String fName =" shaik II .SR ,;

    String suffix=null;
    String [] genSuffixFname=fName.split(" ");


    if(genSuffixFname.length>=2){
        String line=genSuffixFname[genSuffixFname.length-1];
        String pattern="( II| III| IV| V| VI| VII| VIII| ESQ|.JR|.SR)";

        Pattern r =Pattern.compile(pattern);
        Matcher m=r.matcher(line);
        //System.out.println(m.find());
        if(m.find()){
            suffix=genSuffixFname[genSuffixFname.length-1];
        }                   
    }`

我的后缀输出为null。要做的任何修改或任何其他方式我都可以得到这个>

2 个答案:

答案 0 :(得分:0)

尝试从模式中删除空格: String pattern =“(II | III | IV | V | VI | VII | VIII | ESQ | .JR | .SR)”;

答案 1 :(得分:0)

如果要测试给定字符串是否存在于另一个字符串中,可以使用String#contains(anotherString)

或者使用此代码,它通过给定的模式找到所有匹配项:

String fName = "shaik II .SR IV";
String[] genSuffixFname = fName.split("\\s+");
System.out.println(genSuffixFname.length);

if (genSuffixFname.length >= 2) {
    String line = fName; 
    String pattern = "(II)|(III)|(IV)|(V)|(VI)|"
                + "(VII)|(VIII)|(ESQ)|(.JR)|(.SR)";
    Pattern r = Pattern.compile(pattern);
    Matcher m = r.matcher(line); 
    while (m.find()) {
        System.out.println(m.group());
    }
}`

有关Java中正则表达式的更多信息:Read here