Python正则表达式:删除花括号内的子字符串

5
我有一段包含许多词汇和字符的文本。我只想删除双花括号中的内容。
{{ }}

我尝试了?={{.*}},但是没有得到任何结果。

你能够使用嵌套花括号吗? - Mark Byers
这是因为Python不处理花括号。请参见from __future__ import braces(开个玩笑,对于任何新手来说)。 - SomeKittens
所以它是嵌套的,但两个连续大括号之间是连续的,它们之间没有任何内容。 - Shruts_me
2个回答

8

试试这个:

import re
s = re.sub('{{.*?}}', '', s)

请注意,{}通常是正则表达式中的特殊字符,应该用反斜杠进行转义以获得它们的字面意义。但是在这种情况下,它们被解释为文字。 在线演示请参见:ideone

请注意,在 re.sub(...) 中的第二个参数可以传递一个函数。该函数将被用于每个替换操作,并接收一个匹配对象作为参数。该函数返回的字符串将成为该替换操作的替换文本。当处理字符串中的变量或类似内容时,这种方法可能非常有用。 - Tim Visée

4
如果您想从花括号内提取文本,请尝试以下方法:
import re 
s = 'apple {{pear}} orange {banana}'
matches = re.search(r'{{(.*)}}', s)
print matches.group(1)

group(1)将包含字符串'pear'


我想从现有行中删除它们。 - Shruts_me
因此,这种匹配对我的情况没有帮助。 - Shruts_me

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接