Как дифференцировать группы захвата с одинаковым форматом в Regex - PullRequest
0 голосов
/ 22 января 2019

Я просматриваю несколько записей в одном файле журнала, и каждая из них содержит следующую строку:

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 голосов
/ 22 января 2019

Вы можете попробовать что-то вроде:

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

, что даст вам 3 группы, которые вы можете затем сохранить отдельно в вашей базе данных:

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