# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?<=[\s\b()-])(\d+)(\.\d+)?(?=\s?[A-Za-z]?)((\s?[kmgtpun])?(i?b/?s?|s|hz)?)(?=[]\s\b()[]|$)"
test_str = (" 70 02 [95386.467810]= 50 MiB 28414 (1806 ms in 2 ms) in 5 ms 2.74GHz 434MHz 90kHz 23Hz 1.7k 2\n"
"ul 07 [2484867] 41666 KiB/s 29107 [17755556] 0s [ | 2.74 GHz 434 MHz 90 KHz 45 kHz 23 Hz [143M \n"
" 8317 (-70831 us) 10023ms ()-> 10022ms ( (37.9 kHz e) 0.389978] pci 4ns 1.4M 9986 [100k Sep-22]\n"
" 468G 163G 282G 3 511M 5.3M 506M 5.5T 4.3T 1.3T 1.2T 890M 236G -l 1.1T 17G ) 3.4T c 1.1T 1.7T cinema 15G software 446G software 5.5T total 29k x 4 4.1k 23-Sr 4.1k 2 r 4.1k 1 4.1k :38 5 ter 4.1k r 4.1k st\n\n"
"23-Feb \"2022-09-21T00:49:08.191147376+03:00\"p4*[m 2% /boot/efi\n"
" @ 192.168.1.2 :/mnt/6Sep (0) g 02:45:46 done 600 601 605 628 +h\n"
"00:48:22 [0m 0312./05 III (2020-2021) 1")
matches = re.finditer(regex, test_str, re.MULTILINE | re.IGNORECASE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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