import re
regex = re.compile(r"^(?<name>.*)time:\s*\[(?<low>\d+\.?\d*)\s(?:\w{1,2})\s(?<value>\d+\.?\d*)\s(?<unit>\w{1,2})\s(?<high>\d+\.?\d*).*$", flags=re.MULTILINE)
test_str = ("Symbol Creation time: [567.19 us 572.98 us 580.80 us]\n"
"Found 17 outliers among 100 measurements (17.00%)\n"
" 4 (4.00%) high mild\n"
" 13 (13.00%) high severe\n\n"
" Running target/release/deps/fib-9ff430dbccaab995\n"
"Benchmarking fibonacci (Execution): Warming up for 3.0000 s\n"
"fibonacci (Execution) time: [5.4756 ms 5.5354 ms 5.6049 ms]\n"
"Found 13 outliers among 100 measurements (13.00%)\n"
" 3 (3.00%) high mild\n"
" 10 (10.00%) high severe\n\n"
" Running target/release/deps/string-21e60149b4b73866\n"
"Hello World (Execution) time: [518.17 us 519.92 us 521.89 us]\n"
"Found 12 outliers among 100 measurements (12.00%)\n"
" 7 (7.00%) high mild\n"
" 5 (5.00%) high severe\n"
" \n"
"Hello World (Lexer) time: [1.8861 us 1.9440 us 2.0071 us]\n"
" change: [+13.420% +15.685% +17.802%] (p = 0.00 < 0.05)\n"
" Performance has regressed.\n"
"Found 2 outliers among 100 measurements (2.00%)\n"
" 1 (1.00%) high mild\n"
" 1 (1.00%) high severe\n\n")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html