import re
str = "This is test string\n {% set var=2 %}\n {% verbatim %}\n Inside verbatim 1 {% set var2=4%}\n {% endverbatim %} {% set value=10%}\n {% verbatim%} Inside verbatim 2 {% set new_val=13%}\n {% endverbatim %}\n ..."
def replcb( m) :
if m.group ( 1 ) :
return m.group ( 1 )
else :
return "%}"
print re .sub ( r'({%\s *verbatim\s *%}[\s \S ]*?{%\s *endverbatim\s *%})+|%}\n ' , replcb, str )
aW1wb3J0IHJlCgpzdHIgPSAiVGhpcyBpcyB0ZXN0IHN0cmluZ1xuIHslIHNldCB2YXI9MiAlfVxuICB7JSB2ZXJiYXRpbSAlfVxuIEluc2lkZSB2ZXJiYXRpbSAxIHslIHNldCB2YXIyPTQlfVxuIHslIGVuZHZlcmJhdGltICV9IHslIHNldCB2YWx1ZT0xMCV9XG4geyUgdmVyYmF0aW0lfSBJbnNpZGUgdmVyYmF0aW0gMiB7JSBzZXQgbmV3X3ZhbD0xMyV9XG4geyUgZW5kdmVyYmF0aW0gJX1cbiAgICAuLi4iCgpkZWYgcmVwbGNiKG0pOgoJaWYgbS5ncm91cCgxKToKCQlyZXR1cm4gbS5ncm91cCgxKQoJZWxzZToKCQlyZXR1cm4gIiV9IgoJCQpwcmludCByZS5zdWIocicoeyVccyp2ZXJiYXRpbVxzKiV9W1xzXFNdKj97JVxzKmVuZHZlcmJhdGltXHMqJX0pK3wlfVxuJywgcmVwbGNiLCBzdHIpICAgICAgICA=