繁体   English   中英

初学者正则表达式Java

[英]Beginner Regular Expressions Java

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

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

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

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);

在您描述的情况下,我不使用正则表达式,而宁愿存储名称的可能变体,例如,在List中仅使用简单的contains即可验证输入。

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM