Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证正则表达式中包含模板的字符串_Java_Regex - Fatal编程技术网

Java 验证正则表达式中包含模板的字符串

Java 验证正则表达式中包含模板的字符串,java,regex,Java,Regex,我在尝试验证此字符串时遇到问题 因此,用户选择一个模板:q()。然后,用户填写括号内的内容,结果如下: q(a、b、c) 我尝试过使用regex验证这个字符串的不同方法,但它总是返回“否”的答案。我认为问题在于我的正则表达式中的“q”(和”),因为我不确定它应该是什么样子 下面是一段代码: String data2 = "q(a,b,c)"; String regex2 = "q([a-zA-Z0-9,'])"; if(data2.matches(regex2)){ System.o

我在尝试验证此字符串时遇到问题

因此,用户选择一个模板:
q()
。然后,用户填写括号内的内容,结果如下:

q(a、b、c)

我尝试过使用regex验证这个字符串的不同方法,但它总是返回“否”的答案。我认为问题在于我的正则表达式中的
“q”(
”)
,因为我不确定它应该是什么样子

下面是一段代码:

String data2 = "q(a,b,c)";
String regex2 = "q([a-zA-Z0-9,'])"; 

if(data2.matches(regex2)){
    System.out.println("yes");
}
    else{
        System.out.println("No");
}
我确实有另一种方法,删除data2字符串中的“q(“and”)”,但我宁愿在正则表达式中使用它,而不需要删除字符串中的字符


有什么建议吗?

您需要对括号进行转义(并转义转义字符以便编译),然后在末尾添加一个
+
,以指示一个或多个字符

String regex2 = "q\\([a-zA-Z0-9,']+\\)";

您可以读取
模式中正则表达式中每个字符的含义

括号在正则表达式中具有特殊意义…是的,当我在不同的字符串上处理regesx时,我意识到了这一点。只是不知道我应该如何在regexI中声明“q(“and”)”,我扣动扳机太快,没有扣动。你赢了。@Floris在stackoverflow上,每个人都是赢家。啊,原来是“\\”。没有意识到在字母后面加“\\”是可能的。我确实有一个与你的非常类似的解决方案,但没有想到“q”部分。