【问题标题】:Regex matching doesn't work even though the pattern is correct即使模式正确,正则表达式匹配也不起作用
【发布时间】:2010-12-20 08:34:23
【问题描述】:

自从我使用正则表达式已经有几年了,但如果我没记错的话,以下应该可以工作:

String test = "axaxa";
Pattern p = Pattern.compile("([a-c])x\1x\1");
Matcher m = p.matcher(test);

m 在运行时不匹配任何内容。这是我在代码中所做的超级简化版本。该示例实际上取自有关正则表达式的 Java 教程!当它不起作用时,我试图重写我的html匹配代码,我去研究,以为我做错了什么......根据互联网,我没有。所以。有没有人知道为什么这不起作用?

额外信息,test.matches(the_pattern) 返回false。小组回溯似乎搞砸了。

【问题讨论】:

  • 双反斜杠 \\ 不是 \

标签: java regex regex-group capturing-group


【解决方案1】:

尝试以\1 的速度使用\\1

\ 是 Java 字符串中的转义字符。要将\1 发送到正则表达式引擎,我们需要将\ 转义为\\1

【讨论】:

  • 谢谢!我应该想到字符串会在传递给正则表达式引擎之前消除 \ 。呃-.-
【解决方案2】:

在 Java 中,我们必须转义反斜杠:

Pattern p = Pattern.compile("([a-c])x\\1x\\1");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多