0

为什么会这样:

String str = "099.9 102.2" + (char) 0x0D;
RE re = new RE("^([0-9]{3}.[0-9]) ([0-9]{3}.[0-9])\r$");        
System.out.println(re.match(str));

但这不会:

String str = "099.9 102.2" + (char) 0x0D;   
RE re = new RE("^([0-9]{3}.[0-9]) \1\r$");      
System.out.println(re.match(str));

反向引用似乎不起作用......我错过了什么?

4

1 回答 1

2

试试这个目标字符串:

"099.9 099.9\r"

反向引用并不意味着再次执行该子表达式,它意味着匹配该子表达式匹配的任何内容的另一个实例

您还必须在反向引用中使用两个反斜杠:

RE re = new RE("^([0-9]{3}.[0-9]) \\1\r$");
于 2010-04-01T21:13:01.680 回答