如何使用RegEx从固定的Y位数中提取最后X位数?
输入:1234567890123456
((?=\d{16}$)\d{10}|) gives 1234567890
但是
((?=\d{16}$)\d{10}$|) does not give 7890123456
基本上,我想要最后10位如果是强制性的16位否其他没有。
答案 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分手:
(?<=^\d{6})
是一个积极的看法,断言我们从开始到上一个位置有6个数字\d{10}$
匹配字符串