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

How to differentiate capture groups with the same format in Regex

我在一个日志文件中查看多个日志,每个日志都包含以下行:

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 的值,甚至无法区分两者。有什么想法吗?

您可以尝试类似的方法:

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

这会给你 3 个组,然后你可以将它们分别存储到你的数据库中:

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