在Java中使用regex for switch语句

在Java中使用regex for switch语句,java,regex,switch-statement,Java,Regex,Switch Statement,看起来要么我的正则表达式关闭了,要么我在case语句中没有正确使用它。我想要的是一个字符串:正好以一个大写字母开始,后跟两个小写字母,后面至少跟一个数字 我已经查看了regexapi,并在不知道它们的正确用法的情况下尝试了这三种变体(贪婪、不情愿和占有量词)。还检查了字符串的方法,但没有找到与我的需要相关的方法。不能将正则表达式用作开关大小写。(想想看:Java如何知道您是想匹配字符串“[A-Z]{1}[A-Z]{2}\\d{1,}”还是正则表达式?) 在本例中,您可以做的是尝试在默认情况下匹配

看起来要么我的正则表达式关闭了,要么我在case语句中没有正确使用它。我想要的是一个字符串:正好以一个大写字母开始,后跟两个小写字母,后面至少跟一个数字


我已经查看了regexapi,并在不知道它们的正确用法的情况下尝试了这三种变体(贪婪、不情愿和占有量词)。还检查了字符串的方法,但没有找到与我的需要相关的方法。

不能将正则表达式用作开关大小写。(想想看:Java如何知道您是想匹配字符串
“[A-Z]{1}[A-Z]{2}\\d{1,}”
还是正则表达式?)

在本例中,您可以做的是尝试在默认情况下匹配正则表达式

void menu() {
    print();
    Scanner input = new Scanner( System.in );
    while(true) {
        String s = input.next();
        switch (s) {
        case "m": print(); continue;
        case "s": stat(); break;
        case "[A-Z]{1}[a-z]{2}\\d{1,}": filminfo( s ); break;
        case "Jur1": filminfo(s); break; //For debugging - this worked fine
        case "q": ; return;
        }
    }
}

(顺便说一句,这只适用于Java 7和更高版本。在此之前没有打开字符串。)

我认为在切换情况下不能使用正则表达式

将开关表达式中的字符串与表达式进行比较 与每个案例标签关联,就好像String.equals方法 正在使用中


有关更多信息,请参阅。

这是Java 7中的新功能吗?使用正则表达式切换。Java 6或更低版本中没有这样的东西。甚至在6或更低版本中也没有字符串开关(只有整数和枚举)。是的,我怀疑这违反了开关的规则。那么就转到“好的”ol if/else if语句吧?伙计,我喜欢这个网站!谢谢。谢谢你加深了我对switch-statements的理解。处理这个案件的好方法:)
    switch (s) {
        case "m": print(); continue;
        case "s": stat(); break;
        case "q": return;
        default:
            if (s.matches("[A-Z]{1}[a-z]{2}\\d{1,}")) {
                filminfo( s );
            }
            break;
    }