我正在写一个正则表达式来匹配数字序列,接着是一个点,然后是另一个数字序列,并且在总长度上(包括点),整个序列应该是13。为此,我写的正则表达式是:(\d{6,12})\.(\d{0,6})(?<=.{13})
使用正向逆序的意外正则表达式行为
当我对以下两个数据样本运行此表达式时,我期待着只有第二个匹配,但相反,两者都是匹配的。任何人都可以帮我理解为什么?
1234567.123456
>匹配,但我期待它不匹配;1234567.12345
>匹配。
这里是我用来测试的Java代码: import java.util.regex.Pattern;
public class App {
public static void main(String[] args) {
Pattern matcher = Pattern.compile("(\\d{6,12})\\.(\\d{0,6})(?<=.{13})");
System.out.println(matcher.matcher("1234567.123456").matches());
System.out.println(matcher.matcher("1234567.12345").matches());
}
}
输出:
true
true