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