如何使用RegEx从固定的Y位数中提取最后X位数?

时间:2017-12-05 10:33:56

标签: java regex tibco-business-works

如何使用RegEx从固定的Y位数中提取最后X位数?

输入:1234567890123456

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

但是

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

基本上,我想要最后10位如果是强制性的16位否其他没有。

3 个答案:

答案 0 :(得分:0)

如何使用RegEx从固定的Y位数中提取最后X位数?

。{X} $

其中X是您要提取的位数

答案 1 :(得分:0)

您可以从regex101看到正则表达式^\d{6}(\d{10})$将检查String的开头到结尾是否有16位数(所以检查长度)并捕获最后10位。 / p>

  • ^:String
  • 的开头
  • \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 :(得分:0)

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

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

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

RegEx Demo

RegEx分手:

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