如何使用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,字符串也不会以数字
因此,1234567890
将匹配