import re
regex = re.compile(r"<div class=\"dotted-highlight\">\s*+(?!<strong>[^<]*</strong>\s*<ul>)([^\s<]*+(?:(?!\s*<ul>)[\s<]+[^\s<]*)*+)\s*<ul>", flags=re.DOTALL | re.IGNORECASE)
test_str = ("<div class=\"dotted-highlight\"> <strong>So, to sum up your own appearance:</strong>\n"
"<ul>\n"
"<div class=\"dotted-highlight\">So, to sum up your own appearance:\n"
"<ul>\n"
"<li>Your hair must be neat and tidy.</li>")
subst = "<div class=\"dotted-highlight\"><strong>$1</strong><ul>"
result = regex.sub(subst, test_str, count=1)
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