【发布时间】:2019-09-19 11:50:53
【问题描述】:
我有一个格式如下的输入字符串,
String str = "Remote system identifier 1.1.1.1, local AS number 100";
String str = "Remote system identifier 1.1.1.1, local AS number 100.100";
我想从上面的字符串中提取关键字“本地 AS 编号”之后的数字/字符串。所以预期的输出应该是
100
100.100
我尝试了最后一次出现的数字,例如,
Pattern p = Pattern.compile("(\\d+)\\D*$");
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group());
}
但是 is 没有打印预期值。我们可以有模式在特定关键字之后提取一些值吗?
【问题讨论】:
-
您真的是指在关键字“本地 AS 编号”之后吗?还是只是这样,输入总是绑定到相同的模式?
-
"\\blocal AS number\\s+(\\d+(?:\\.\\d+)?)"并抓住m.group(1) -
是的,数字总是在关键字“本地AS号”之后
-
"本地 AS 编号 (\\d+.{0,1}\\d*)$" 和 m.group(1)