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

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

这是我到目前为止的内容:

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 ***");
        }




    }
}


我希望获得一些帮助来构建模式或获得建议的替代方法,以完成相同的任务。

谢谢。

最佳答案

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

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


或稍大一些的模式看起来像这样

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

09-11 19:36