java - 获取正则表达式数据

标签 java regex

我正在尝试使用 Java 正则表达式来提取数据。它匹配我的数据,但我无法获取组数据。我正在尝试获取数据 1,xmlAggregator,268803451,3。查看文档,我假设如果我将 () 放在\d+ 和\w+ 周围,我会得到组内的数字和字符串。关于如何更改正则表达式的任何建议?

字符串:

Span(trace_id:1, name:XmlAggregator, id:268803451, parent_id:3)

Java代码:

      String pattern="Span\\(trace_id:(\\d+), name:(\\w+), id:(\\d+), parent_id:(\\d+), (duration:(\\d+))*";
      Pattern r = Pattern.compile(pattern);
      Matcher m = r.matcher(line);

      int count = 0;

      while(m.find()) {
         System.out.println("Match number "+count);
         System.out.println("start(): "+m.start());
         System.out.println("end(): "+m.end());
         System.out.println("Found value: " + m.group(count) );
         count++;
      }

输出:

Match number 0
start(): 0
end(): 64
Found value: Span(trace_id:1, name:XmlAggregator, id:268803451, parent_id:3, 

希望得到:

   
Found value: 1 
Found value: XmlAggregator 
Found value: 268803451 
Found value: 3 

最佳答案

您可以使用 group 访问捕获组(未转义括号内的匹配部分)匹配结果的方法:

System.out.println("Trace ID = " + m.group(1));
System.out.println("Name = " + m.group(2));
// etc...

请注意,您从 1 而不是 0 开始计算捕获组。这是因为组 0 对应于整个匹配字符串。

关于java - 获取正则表达式数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24273079/

相关文章:

regex - 删除字符串末尾的句点和数字

java - 替换java问题中的字符串

javascript - 使用 javascript 解析 BEM 类选择器的正则表达式

javascript - 如何使用 RegEx 和 Jquery 隐藏 DIV 元素

java - XML 架构。处理命名空间感知属性值

java - 字符串操作每 4 个字符插入一个字符

java - 巧克力解算器 : define a constraint on a part of an intVar

Java int 数组格式错误的声明

java - Android AlertManager 通过重启、更新等

ios - 如何在 swift 中允许电子邮件字符串中存在空格?