java - 为什么会出现模式不匹配的情况?

标签 java regex

尝试匹配以下模式时:

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

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

最佳答案

如果要匹配数字,则需要字符类中的\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 字符串文字的一部分时,需要加倍,以便单个 \ 出现在字符串中。字 rune 字也是如此: '\\' 是单个 \ 字符。)

关于java - 为什么会出现模式不匹配的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15049222/

相关文章:

java - 有没有一种简单的方法可以返回整数值和/或 double 值?

java - Java中如何正确发送和接收多个XBee的数据包

regex -\w 是否匹配 Unicode 标准中定义的所有字母数字字符?

正则表达式或批量

java - 使用 "in"过滤器的子查询删除

java - Scala 和 Java 泛型——提取和返回嵌套类型

java.lang.StringIndexOutOfBoundsException : when using PolyUtil. 解码

MySQL UPDATE 一个表,其中包含来自另一个表的多行,以使用 REGEXP 字边界更改拼写错误的单词

java - 参与正则表达式

python正则表达式删除不在 '<'和 '>'之间的所有文本