如何使用REGEX从固定Y数字编号中提取最后一个数字



如何使用REGEX从固定y数字编号中提取最后的X数字?

输入:1234567890123456

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

但是

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

基本上,我想要最后10位数字如果是强制性的16数字no else nothing

如何使用REGEX从固定y数字编号中提取最后的X数字?

。{x} $

其中x是要提取的数字

看起来您不使用Java,无法使用捕获组。

对于您的TIBCO工具,您可以使用此正则判决,并验证16位数字以获取最后10位数字:

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

REGEX DEMO

REGEX分手:

  • (?<=^d{6})是一个积极的外观,可以断言我们有6位从开始到以前的位置
  • d{10}$在字符串末端匹配10位数字

您可以从Regex101看到Regex ^d{6}(d{10})$将检查String的开始到结尾(因此请检查长度)是否有16Digit(因此请检查长度)并捕获最后10个。

  • ^:String的开始
  • d{6}:第6位数字
  • (d{10}):捕获10数字
  • $:字符串的结尾

因此,您可以在Java中使用

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

给定字符串" hello 00001234567890 hello"
然后d{10}b即使数字长于10,字符串也不会以数字

结束,也会为您提供数字中的最后10位数字。

因此,1234567890将匹配

最新更新