import re
regex = re.compile(r"\[(collapse|collapse in)\]\s*<(h[2-4])>(.*)<\/\2>(.*)\s*\[\/collapse\]", flags=re.DOTALL)
test_str = ("<p>Bene eros jus neo olim pecus suscipit. </p>\n"
"[collapse in] \n"
" <h2>titel</h2>\n"
"<p>Illum iriure neo populus refoveo.</p> \n"
" <h3>titel</h3>\n"
"<p>Illum iriure neo populus refoveo.</p> \n"
" <h2>titel</h>\n"
"<p>Illum iriure neo populus refoveo.</p> \n"
"[/collapse]\n"
"[collapse] \n"
" <h3>titel2</h3>\n"
"<p>Illum iriure neo populus refoveo.</p> [/collapse]")
subst = "<\\2 data-target=\"#\\3\" data-toggle=\"\\1\">\\3</\\2>\\n<div id=\"\\3\" class=\"collapse\">\\4</div>"
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