import re
regex = re.compile((r"(?x) # Allow comments in regex (ignore whitespace)\n"
r"(?: # Repeat *\n"
r" [^(|)]*+ # Match every char except ( ) or |\n"
r" ( # 1. Group 1\n"
r" \( # Opening paren\n"
r" (?: # chars inside:\n"
r" [^()]++ # a. everything inside parens except nested parens\n"
r" | # or\n"
r" (?1) # b. nested parens (recurse group 1)\n"
r" ) #\n"
r" \) # Until closing paren.\n"
r" )?+ # (end of group 1)\n"
r")*+ #\n"
r"\K # Keep text out of match\n"
r"\| # Match a pipe"))
test_str = "example|example (example(example))|example|example|example(example|example|example(example|example))|example"
subst = ""
result = regex.sub(subst, test_str)
if result:
print(result)
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