即使模式正确,正则表达式匹配也不起作用

时间:2010-12-20 08:34:24

标签: java regex regex-group capturing-group

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

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。似乎小组回溯正在弄乱它。

2 个答案:

答案 0 :(得分:3)

尝试\\1步伐\1

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

答案 1 :(得分:1)

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

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