我正在寫一個正則表達式來匹配數字序列,接着是一個點,然後是另一個數字序列,並且在總長度上(包括點),整個序列應該是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