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

How to extract last X digits from fixed Y digit number using RegEx?

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

输入:1234567890123456

但是

基本上,我想要最后 10 位数字 if 它是强制性的 16 位数字没有 else 没有。

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

.{X}$

其中 X 是您要提取的位数

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 无效。

您似乎没有使用 Java 并且无法使用捕获组。

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

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

RegEx Demo

正则表达式分解:

  • (?<=^\d{6}) 是一个积极的回顾,断言我们从开始到前一个位置有 6 位数字
  • \d{10}$ 匹配字符串末尾的 10 个数字