为什么匹配:

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));


后面的参考文献似乎不起作用...我想念什么?

最佳答案

尝试使用以下目标字符串:

"099.9 099.9\r"


向后引用并不意味着再次执行该子表达式,而是意味着匹配该子表达式匹配的另一个实例。

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

RE re = new RE("^([0-9]{3}.[0-9]) \\1\r$");

10-04 19:59