自从我使用正则表达式已经有几年了,但如果我没记错的话,以下内容应该有效:
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
。似乎小组回溯正在弄乱它。
答案 0 :(得分:3)
尝试\\1
步伐\1
。
\
是Java字符串中的转义字符。要将\1
发送到正则表达式引擎,我们需要将\
转义为\\1
。
答案 1 :(得分:1)
在Java中,我们必须转义反斜杠:
Pattern p = Pattern.compile("([a-c])x\\1x\\1");