import re
regex = re.compile(r"dcs.lustre.device.ost.attributes\[.*-((.*).+?),.*,rate\]")
test_str = ("[\n"
"{\n"
"itemid: \"26940\",\n"
"status: \"0\",\n"
"lastvalue: \"60843699081216\",\n"
"lastclock: \"1454321651\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,kbytesavail]\",\n"
"name: \"OST0000 available space\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"60\",\n"
"value_type: \"3\",\n"
"units: \"Bytes\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"},\n"
"{\n"
"itemid: \"26943\",\n"
"status: \"0\",\n"
"lastvalue: \"61486384615424\",\n"
"lastclock: \"1454321686\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0001,kbytesfree]\",\n"
"name: \"OST0001 free space\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"5\",\n"
"value_type: \"3\",\n"
"units: \"Bytes\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"},\n"
"{\n"
"itemid: \"26944\",\n"
"status: \"0\",\n"
"lastvalue: \"62068190941184\",\n"
"lastclock: \"1454272094\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,kbytestotal]\",\n"
"name: \"OST0000 total space\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"86400\",\n"
"value_type: \"3\",\n"
"units: \"Bytes\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"},\n"
"{\n"
"itemid: \"26945\",\n"
"status: \"0\",\n"
"lastvalue: \"62068190941184\",\n"
"lastclock: \"1454272092\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0001,kbytestotal]\",\n"
"name: \"OST0001 total space\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"86400\",\n"
"value_type: \"3\",\n"
"units: \"Bytes\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"},\n"
"{\n"
"itemid: \"26946\",\n"
"status: \"0\",\n"
"lastvalue: \"0\",\n"
"lastclock: \"1454321686\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,read_bytes,rate]\",\n"
"name: \"OST0000 read\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"5\",\n"
"value_type: \"3\",\n"
"units: \"Bytes/sec\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"},\n"
"{\n"
"itemid: \"26942\",\n"
"status: \"0\",\n"
"lastvalue: \"61477895307264\",\n"
"lastclock: \"1454321686\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,kbytesfree]\",\n"
"name: \"OST0000 free space\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"5\",\n"
"value_type: \"3\",\n"
"units: \"Bytes\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"},\n"
"{\n"
"itemid: \"26951\",\n"
"status: \"0\",\n"
"lastvalue: \"2878341087\",\n"
"lastclock: \"1454321686\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0001,write_bytes,rate]\",\n"
"name: \"OST0001 write\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"5\",\n"
"value_type: \"3\",\n"
"units: \"Bytes/sec\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"},\n"
"{\n"
"itemid: \"26950\",\n"
"status: \"0\",\n"
"lastvalue: \"3185573852\",\n"
"lastclock: \"1454321686\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0000,write_bytes,rate]\",\n"
"name: \"OST0000 write\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"5\",\n"
"value_type: \"3\",\n"
"units: \"Bytes/sec\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"},\n"
"{\n"
"itemid: \"26947\",\n"
"status: \"0\",\n"
"lastvalue: \"0\",\n"
"lastclock: \"1454321686\",\n"
"key_: \"dcs.lustre.device.ost.attributes[plexfs-OST0001,read_bytes,rate]\",\n"
"name: \"OST0001 read\",\n"
"hostname: \"lustre_plexfs\",\n"
"value: \"lustre\",\n"
"delay: \"5\",\n"
"value_type: \"3\",\n"
"units: \"Bytes/sec\",\n"
"category: \"performance\",\n"
"type: \"filesystem\",\n"
"history: \"90\"\n"
"}\n"
"]")
match = regex.search(test_str)
if match:
print(f"Match 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