以下正则表达式在 Eclipse 的查找对话框中有效,但在 Java 中抛出异常。
我找不到原因
(?<=(00|\\+))?[\\d]{1}[\\d]*
执行时出现语法错误:
Pattern.compile("(?<=(00|\\+))?[\\d]{1}[\\d]*")
在我使用的查找中
(?<=(00|\+))?[\d]{1}[\d]*
我想匹配带或不带 + 或 00 的电话号码。但这不是重点,因为我在位置 13 处收到语法错误。如果去掉第二个“?”,我就不会收到错误
Pattern.compile("(?<=(00|\\+))[\\d]{1}[\\d]*")
请考虑,有时我需要使用更大的数字而不是 1,无论如何,问题是关于语法错误的
最佳答案
如果您的数据看起来像 00ddddd
或 +ddddd
(其中 d 是数字),您想要获取 @Bergi 的正则表达式 (?<=00|\\+)\\d+
就可以了。但是,如果您的数据有时没有像 ddddd
这样您想要忽略的任何部分,那么您可能应该使用像
String[] data={"+123456","00123456","123456"};
Pattern p=Pattern.compile("(?:00|\\+)?(\\d+)");
Matcher m=null;
for (String s:data){
m=p.matcher(s);
if(m.find())
System.out.println(m.group(1));
}
输出
123456
123456
123456
关于java - 模式语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451258/