import re
regex = re.compile(r"(?<metric>.*)(?<fields>:{.*})? (?<value>.*)", flags=re.MULTILINE)
test_str = ("jvm_buffer_memory_used_bytes{id=\"direct\",} 81920.0\n"
"jvm_buffer_memory_used_bytes{id=\"mapped\",} 0.0\n"
"jvm_threads_live 23.0\n"
"tomcat_global_received_bytes_total{name=\" http - nio -8080\",} 0.0\n"
"tomcat_global_received_bytes_total{name=\"http-nio-8080\",} 0.0\n"
"jvm_gc_pause_seconds_count{action=\"end of minor GC\",cause=\"Allocation Failure\",} 7.0\n"
"jvm_gc_pause_seconds_sum{action=\"end of minor GC\",cause=\"Allocation Failure\",} 0.232\n"
"jvm_gc_pause_seconds_count{action=\"end of minor GC\",cause=\"Metadata GC Threshold\",} 1.0\n"
"jvm_gc_pause_seconds_sum{action=\"end of minor GC\",cause=\"Metadata GC Threshold\",} 0.01\n"
"jvm_gc_pause_seconds_count{action=\"end of major GC\",cause=\"Metadata GC Threshold\",} 1.0\n"
"jvm_gc_pause_seconds_sum{action=\"end of major GC\",cause=\"Metadata GC Threshold\",} 0.302\n"
"jvm_gc_pause_seconds_max{action=\"end of minor GC\",cause=\"Allocation Failure\",} 0.0\n"
"jvm_gc_pause_seconds_max{action=\"end of minor GC\",cause=\"Metadata GC Threshold\",} 0.0\n"
"jvm_gc_pause_seconds_max{action=\"end of major GC\",cause=\"Metadata GC Threshold\",} 0.0\n"
"jvm_gc_live_data_size_bytes 5.0657472E7")
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