【问题标题】:Regex to extract last occurance of a digit/number after specfic keyword in java [duplicate]正则表达式提取Java中特定关键字后最后出现的数字/数字[重复]
【发布时间】: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)

标签: java regex java-8


【解决方案1】:

你可以这样做。

String str = "Remote system identifier 1.1.1.1, local AS number 100.100";
String localAsNumberText = "local AS number";
System.out.println(str.substring(str.lastIndexOf(localAsNumberText)+localAsNumberText.length()+1));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多