我想用Python编写一个RegEx,如果字符串中出现{{ expression }}
,它将把字符串改成{% print expression %}
式
{{ a+b }}
to
{% print a+b %}
或者
{{ func() }}
to
{% print func() %}
但如果它包含如下变量,则不会更改:
{{ var }} or {{ var.attr }}
我试过这个:
pattern = re.compile( r'{{(?=(?:(?!{{)(?!\w([.]\w)*).*([()][+-/*%]\w)*)*}})')
temp_str = pattern.sub('{% print ', "{{ a }} {{ func() }} {{var.func()}} {{ a+ab+b*+2/100 }} {{ var.atr }} ")
它输出:
'{% print a }} {% print func() }} {{ var.func()}} {% print a+ab+b*+2/100 }} {% print var.atr }}'
注意:关于右大括号`}我必须工作。你知道吗
我期望的结果是:
'{{ a }} {% print func() }} {% print var.func()}} {% print a+ab+b*+2/100 }} {{ var.atr }}'
您可以使用
re.sub
方法中的函数来捕获所有{{<something>}}
标记,然后分别处理每个标记:相关问题 更多 >
编程相关推荐