初学者正则表达式Java

时间:2014-01-10 21:50:16

标签: java regex expression

我想要编写一个正则表达式,它将与名称的几种变体/常见用法之一匹配。

我需要接受用户输入,&然后验证输入是否与列出的变体之一匹配。如果有匹配,我需要输出匹配,如果没有,我应该输出输入不匹配。

这是我到目前为止所做的:

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExMyName {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.println("Name: Daimon");
        System.out.println("Common Usages: Daimon, Daimo, Dai, daimon, daimo, DAIMON");
        System.out.println("Enter any of the variations listed only: ");

        //*** HELP REQUIRED WITH PATTERN BELOW - pat
        Pattern pat = Pattern.compile();
        Matcher match = pat.matcher(scan.nextLine());


        //***HELP REQUIRED WITH FIND BELOW
        if (match.find()){
            System.out.println("*** You entered a valid name ***");
        }else{
            System.out.println("*** You entered an invalid name ***");
        }




    }
}

我想帮助构建模式或接收可以完成同样事情的替代方法的建议。

感谢。

2 个答案:

答案 0 :(得分:3)

此模式将匹配任何字符串DaimonDaimoDaidaimondaimoDAIMON

Pattern pattern = Pattern.compile("^([dD]aimon?|DAIMON|Dai)$");

或者稍微慷慨的模式看起来像这样

Pattern pattern = Pattern.compile("^dai(mon?)?$",Pattern.CASE_INSENSITIVE);

答案 1 :(得分:2)

对于您所描述的情况,我不会使用正则表达式,而是希望存储名称的可能变体,例如:在List中只使用一个简单的包含来验证输入。

List<String> daimons = Arrays.asList("Daimon", "Daimo", "Dai", "daimon", "daimo", "DAIMON");

我没有真正看到正则表达式的强大功能。如果我不认为你的解决方案可能是类似的东西:

公共类RegExMyName {

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    List<String> daimons = Arrays.asList("Daimon", "Daimo", "Dai", "daimon", "daimo", "DAIMON");
    StringBuilder diamonCommonUsage = new StringBuilder();
    for(String daimonVariations : daimons) {
      diamonCommonUsage.append(daimonVariations);
      diamonCommonUsage.append(", "); //+ remove the last ","
    }        

    System.out.println("Name: Daimon");
    System.out.println("Common Usages: " + diamonCommonUsage.toString());
    System.out.println("Enter any of the variations listed only: ");

    if (match.find(daimons.contains(scan.nextLine()))){
        System.out.println("*** You entered a valid name ***");
    }else{
        System.out.println("*** You entered an invalid name ***");
    }
}

}