我试图捕获字符串中的2个东西" T3st12345"
我想捕获尾随数字(" 12345")以及测试名称" T3st"。
这就是我现在要将尾随数字与java的Matcher库相匹配:
Pattern pattern = Pattern.compile("([0-9]*$)");
Matcher matcher = pattern.matcher("T3st12345");
但它返回"未找到匹配"。
如何为尾随数字进行此工作?如何捕获测试名称?
答案 0 :(得分:2)
您可以将此正则表达式与2个捕获的组一起使用:
^(.*?)(\d+)$
RegEx分手:
^
:开始(.*?)
:捕获任何角色零(懒惰)(\d+)
:捕获的组#1在结束$
:结束答案 1 :(得分:2)
您可以使用以下正则表达式:
Pattern pattern = Pattern.compile("(\\p{Alnum}+?)([0-9]*)");
Matcher matcher = pattern.matcher("T3st12345");
if (matcher.matches()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
请参阅Java demo
(\\p{Alnum}+?)([0-9]*)
方法中使用.matches()
模式(要求完整的字符串匹配),并尽可能少地匹配和捕获第1组中的一个或多个字母数字字符({{1} }是一个惰性量词),并将任何零个或多个数字捕获到第2组。
请注意,+?
可以替换为更明确的\\p{Alnum}
。