有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用正则表达式从固定的Y位数中提取最后的X位数?

如何使用正则表达式从固定的Y位数中提取最后的X位数

输入:1234567890123456

  • ((?=\d{16}$)\d{10}|) gives 1234567890

但是

  • ((?=\d{16}$)\d{10}$|) does not give 7890123456

基本上,我想要最后10个数字,如果它是强制的16个数字,则不否则


共 (3) 个答案

  1. # 1 楼答案

    regex101可以看到,正则表达式^\d{6}(\d{10})$将检查String从开始到结束是否有16位(因此检查长度)并捕获最后10位

    • ^:字符串的开头
    • \d{6}:前6位
    • (\d{10}):捕获10位数字
    • $:字符串的结尾

    所以你可以在Java中使用它

    String s = "1234567890123456";
    Pattern p = Pattern.compile("^\\d{6}(\\d{10})$");
    Matcher m = p.matcher(s);
    if(m.matches()){
        System.out.println(m.group(1));
    }
    

    这可以在这个ideone上检查

    只需添加一个else子句即可打印出String无效

  2. # 2 楼答案

    看起来您没有使用Java,无法使用捕获组

    对于tibco工具,您可以使用此带有16位验证的正则表达式来获取最后10位:

    (?<=^\d{6})\d{10}$
    

    RegEx Demo

    正则表达式拆分:

    • (?<=^\d{6})是一个积极的向后看,可以断言从开始到前一个位置有6个数字
    • \d{10}$匹配字符串末尾的10位数字
  3. # 3 楼答案

    如何使用正则表达式从固定的Y位数中提取最后的X位数

    。{十} 美元

    其中X是要提取的位数