我正在编写一个正则表达式来匹配一个数字序列,然后是一个点,然后是另一个数字序列,总长度,包括点,整个序列应该是 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