如何在正则表达式中区分具有相同格式的捕获组

时间:2019-01-22 03:57:48

标签: regex regex-group

我正在一个日志文件中浏览几个日志,每个日志都包含以下行:

Completed in 0.00023 (4328 reqs/sec) | Rendering: 0.00010 (45%) | DB: 0.00000 (0%)

我的捕获组是:

0.00023 (4328 reqs/sec)
0.00010 (45%)
0.00000 (0%)

我需要解析每个日志条目并将解析后的值存储在数据库中。

示例:

       cycle_time        |  render-time   |  active_record 
                         |                | 
 0.00023 (4328 reqs/sec) |  0.00010 (45%) |     0.00000 (0%)
                         |                |

我正在使用正则表达式来解析它们,但我的问题是我无法将值彼此区分开,因为它们几乎具有相同的格式。我目前使用此正则表达式:

\d\.\d{5}\s\(\d{1,2}\%\)

但是,它仅捕获render_time和active_record的值,甚至无法区分两者。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

((?<=Completed in ).+?(?= \|)).*((?<=Rendering: ).+?(?= \|)).*((?<=DB: ).*)$

这将为您提供3组,然后您可以将其分别存储到数据库中:

 1. 0.00023 (4328 reqs/sec)
 2. 0.00010 (45%)
 3. 0.00000 (0%)