Python:删除第一个花括号外的所有字符

时间:2019-05-05 03:03:51

标签: python regex

如果我有这样的字符串:

text to remove { first text { group } { group2 } } more text to remove

我只想专门删除不在第一个大括号内的文本,以得到如下结果:

{ first text { group } { group2 } }

要在正则表达式中执行此操作,我不确定如何仅针对大括号的第一次迭代而不是嵌套括号进行指定。

也许有比使用正则表达式更简单的方法。不过,要删除的文字的长度可能会有所不同。

2 个答案:

答案 0 :(得分:3)

您可以使用searchgroup

>>> re.search('{.*}',s).group(0)
'{ first text { group } { group2 } }'
>>> 

findall

>>> re.findall('{.*}',s)[0]
'{ first text { group } { group2 } }'
>>> 

答案 1 :(得分:2)

除了正则表达式,您还可以使用findrfind,它们比正则表达式更有效。

str = 'text to remove { first text { group } { group2 } } more text to remove'
begin, end = str.find('{'), str.rfind('}')
filtered_str = str[begin: end+1]
print(filtered_str)