Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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,尝试匹配以下模式时: String regex_2 = "w+ w+ [d-]{10}"; System.out.println("Dev Anand 98-76-543210".matches(regex_2)); 我得到false作为输出。为什么会这样?您需要使用\s来表示,这反过来需要字符串文本中的\s,因为在Java字符串中 String regex_2 = "\\w+ \\w+ [\\d-]{10}"; 此外,返回true,因此您需要使用不同的方法(例如) 或者另一种模式: "De

尝试匹配以下模式时:

String regex_2 = "w+ w+ [d-]{10}";
System.out.println("Dev Anand 98-76-543210".matches(regex_2));

我得到
false
作为输出。为什么会这样?

您需要使用
\
s来表示,这反过来需要字符串文本中的
\
s,因为在Java字符串中

String regex_2 = "\\w+ \\w+ [\\d-]{10}";
此外,返回
true
,因此您需要使用不同的方法(例如)

或者另一种模式:

"Dev Anand 98-76-543210".matches("\\w+ \\w+ [\\d-]{12}"); // true

如果要匹配数字,字符类中需要
\d
,而不是
d
。同样,您还需要
\w
而不是
w
来匹配“word”字符。最后,您的数字是12个字符长(10个数字加两个破折号),而不是10个字符。把它放在一起,这应该会起作用:

String regex_2 = "\\w+ \\w+ [\\d-]{12}";
System.out.println("Dev Anand 98-76-543210".matches(regex_2));
(请注意,当Java字符串文字的一部分出现时,
\
需要加倍,以便单个
\
在字符串中结束。字符文字也是如此:
'\\'
是单个
\
字符。)

尝试以下操作:

String regex_2 = "\\w+ \\w+ [\\d-]{12}";

你们只匹配了其中的10个,而包括这两个
-
就有12个也许你们的意思是
\\w+\\w+[d-]{10}
-
在这里不意味着
连字符
?我想可能是有人,虽然你的答案是从TedHopp的剽窃。好吧,看起来有人比你快=\是的,可能是。。。但这并不意味着你会投反对票,也不意味着你会放松;这只是一票否决票。向下箭头的标题文字明确表示“这个答案没有用”,在这种情况下,我必须同意这一点。它没有用处,因为它没有添加其他答案中没有的内容。注意,我不是落选者。
String regex_2 = "\\w+ \\w+ [\\d-]{12}";