import re
regex = re.compile(r"\(([^()]*(?:\([^()]*\)[^()]*)*)\)\s*$", flags=re.MULTILINE)
test_str = ("Coven - GLAM (Lager - IPL (India Pale Lager). ABV 5.5%, IBU 15)\n"
"Molson Coors (UK) - Carling Original (Lager - Pale. ABV 3,7%)\n"
"Barista Chocolate Quad (Belgian Quadrupel. ABV 11%)\n"
"4Пивовара - Black Jesus White Pepper (Porter - American. OG 17, ABV 6.7%, IBU 69)\n"
"4Пивовара - Ether [Melon] (Sour - Farmhouse IPA OG 17, ABV 6.5%, IBU 40)\n"
"Кер Сари Пшеничное (Wheat Beer - Other. ABV 4,5%)\n"
"Butch & Dutch - IPA 100 IBU (IPA - International. ABV 7%, IBU 100)\n"
"Trappistes Rochefort 6 (Belgian Dubbel. ABV 7,5%, IBU 22)\n"
"Fournier - Frères Producteurs - Eleveurs - Cidre Rose (Cider - Rose. ABV 3%)\n"
"Shepherd Neame - Classic Collection - India Pale Ale (IPA - English. OG 14,62%, ABV 6,1%)")
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