This problem can be solved without regular ones:
text = """ <data> <items> <item name="item1"></item> <item name="item2"></item> <item name="item3"></item> <item name="item4"></item> </items> </data> AAA BBB CCC """ try: i = text.rindex('</data>') text = text[: i + len('</data>')] except ValueError: pass
But if you really want, then:
import re text = re.sub(r'(</data>).+', r'\1', text, flags=re.DOTALL) print(text)