用于匹配的Java正则表达式;c/c++&引用;

用于匹配的Java正则表达式;c/c++&引用;,java,regex,Java,Regex,我有以下几行代码来检查用户输入的主题: System.out.print("Enter a subject (java|c/c++|.net): "); i = sc.nextLine().trim(); valid = i.matches("(java|c/c++|.net)"); if(valid==false){ System.out.println("Wrong Input"); }else{ System.out.prin

我有以下几行代码来检查用户输入的主题:

System.out.print("Enter a subject (java|c/c++|.net): ");
    i = sc.nextLine().trim();
    valid = i.matches("(java|c/c++|.net)");
    if(valid==false){
        System.out.println("Wrong Input");
    }else{
        System.out.println("Right Input");
    }
问题是当我进入c/c++或.net时,它们显示“输入错误”。
我想可能是正则表达式中的“/”和“.”。你们能帮帮我吗?

你们想要的正则表达式实际上是

java|c\/c\+\+|\.net
由于Java将正则表达式作为字符串处理,因此需要将反斜杠加倍,从而产生:

java|c\\/c\\+\\+|\\.net
然后,您的代码看起来像(还有一些其他改进):


伴侣。。。查看“valid”的初始化。你不能那样做|试着这样做:
“(java | c/c\\\\+\\\\\\\\\\\\\\\\\\\\\.net)
在尝试使用正则表达式之前,您是否可以了解一点正则表达式的知识?
+
是正则表达式中的特殊字符。学习如何编写正则表达式。请参阅和的API文档。顺便说一下,您可以编写!valid代替valid==false
System.out.print("Enter a subject (java|c/c++|.net): ");
i = sc.nextLine().trim();
if(i.matches("java|c\\/c\\+\\+|\\.net")) {
    System.out.println("Right Input");
} else {
    System.out.println("Wrong Input");
}