【发布时间】:2011-05-31 03:37:12
【问题描述】:
我需要检查一个字符串是"\++?",它会匹配+6014456之类的东西
但我收到此错误消息invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\) .... 为什么?
【问题讨论】:
-
发布您的
.matches()电话。不清楚你的实际论点是什么。
我需要检查一个字符串是"\++?",它会匹配+6014456之类的东西
但我收到此错误消息invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\) .... 为什么?
【问题讨论】:
.matches() 电话。不清楚你的实际论点是什么。
它给你一个错误,因为 "\++?" 不是一个有效的 Java 文字 - 你需要转义反斜杠。试试这个:
Pattern pattern = Pattern.compile("\\++?");
但是,我认为这实际上不是您想要的正则表达式。你的意思是不是真的像:
Pattern pattern = Pattern.compile("\\+\\d+");
这对应于\+\d+ 的正则表达式,即一个加号后跟至少一个数字。
【讨论】:
我认为你应该使用两个反斜杠。一个用于转义第二个(因为它是 java 字符串),第二个用于转义 +(因为它是正则表达式的特殊字符)。
【讨论】:
不应该更像“\\+”吗? ?
Pattern pattern = Pattern.compile("\\++?");
System.out.println(pattern.matcher("+9970").find());
为我工作
【讨论】: