java - 模式语法错误

标签 java regex

以下正则表达式在 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/

相关文章:

Java 检查字符串仅包含某些单词和字符

java - 分析应用程序的 Tomcat 配置

java - 为什么 spring 框架不将我的 YAML 列表绑定(bind)到实体?

java - 玩!框架 Java 项目与 Sencha ExtJS 集成?

正则表达式替换中的 Python 转义字符串

python - 尝试从正则表达式生成 pandas 数据框列时出现问题?

java - ArrayList 未显示正确大小的问题

java - 我的 JFrame 在运行 "while"循环后显示。我希望 JFrame 在运行时显示

使用正则表达式 c 检查 url

javascript - 如何使用正则表达式在 Javascript 大海捞针中查找分隔针?