import re
regex = re.compile(r"(?s)\biPhone:\n\n+(?:(?!\n\n).)+\bSerial Number: (\w+)", flags=re.MULTILINE)
test_str = ("USB:\n\n"
"USB 2.0 SuperSpeed Bus:\n\n"
" Host Controller Location: Built-in USB\n\n"
" Internal Memory Card Reader:\n\n"
" Product ID: 0x8406\n"
" Serial Number: 000000000820 //i dont want this\n"
" Built-In: Yes\n\n"
"USB 3.0 Hi-Speed Bus:\n\n"
" PCI Device ID: 0x8c31 \n\n\n"
" iPhone:\n\n"
" Vendor ID: 0x05ac (Apple Inc.)\n"
" Version: 7.02\n"
" Serial Number: wea0aa752ada7722ac92575e98z2e89c691f4282 //i want this\n"
" Speed: Up to 480 Mb/sec\n"
" Manufacturer: Apple Inc.\n"
" Location ID: 0x14100000 / 9\n\n"
" Apple Internal Keyboard / Trackpad:\n\n"
" Product ID: 0x0262\n"
" Vendor ID: 0x05ac (Apple Inc.)\n"
" Location ID: 0x14c00000 / 3\n"
" Current Available (mA): 500\n"
" Current Required (mA): 40\n"
" Built-In: Yes")
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