Надеюсь, еще не поздно предложить возможное решение этой проблемы. Вот мой код:
import re
def run():
f = """<html>
<tag>bruh</tag>
<a><bro>text here</bro></a>
</html>
"""
g = ""
while g != f:
g = f
f = re.sub(r'<(.+?)(\w)>([\w\W\n\r]*)</\1\2>', r'<\2>\3</\2>', f)
print(f)
run()
Вывод:
<l>
<r>
<e>This is a title</e>
</r>
<y>
<v>This is a div <v>This is a nested div</v></v>
</y>
</l>
Я продолжаю использовать одну и ту же функцию замещения до тех пор, пока не будет больше возможных замен, обозначенных g != f
. т.е. пока замещенный текст и основной текст не совпадают.
Примечание: Я в основном пользователь Java, и в прошлом я использовал Python, может быть, 5 раз. Это не оправдание для оправдания (наиболее вероятного) неправильного ответа, но как предупреждение о том, что может быть несколько ошибок в определенных c случаях, о которых я не знаю.