如何使用正则表达式从固定的 Y 数字中提取最后 X 数字?
How to extract last X digits from fixed Y digit number using RegEx?
如何使用正则表达式从固定的 Y 数字中提取最后 X 数字?
输入:1234567890123456
((?=\d{16}$)\d{10}|) gives 1234567890
但是
((?=\d{16}$)\d{10}$|) does not give 7890123456
基本上,我想要最后 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}$
正则表达式分解:
(?<=^\d{6})
是一个积极的回顾,断言我们从开始到前一个位置有 6 位数字
\d{10}$
匹配字符串末尾的 10 个数字
如何使用正则表达式从固定的 Y 数字中提取最后 X 数字?
输入:1234567890123456
((?=\d{16}$)\d{10}|) gives 1234567890
但是
((?=\d{16}$)\d{10}$|) does not give 7890123456
基本上,我想要最后 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}$
正则表达式分解:
(?<=^\d{6})
是一个积极的回顾,断言我们从开始到前一个位置有 6 位数字\d{10}$
匹配字符串末尾的 10 个数字