Re.sub正则表达式删除嵌套括号python

时间:2013-06-25 15:46:16

标签: python regex

我有一个字符串,我想在python中使用正则表达式替换删除大括号的内容,除了位于#字符之后和.字符之前的括号内的任何数字(3) ,在下面的示例中),以及圆括号内的任何文本完全由字母组成。 (以下示例中的“信息”)

我把它放在一起解决第一个问题,但它不起作用(我是regex的绝对初学者)。

string = 'Name, Other "Else" (2000) (info) {empty (#3.99)}'

r= re.sub(r'(^?={))?\{.+\(#(\d+)\.\d+\)\}','',string)
print r

理想的输出应该是:

Name, Other "Else" (2000) (3)

感谢任何帮助

1 个答案:

答案 0 :(得分:2)

试试这个:

re.sub(r'\(\d*\D+\d*\)\s+','',re.sub(r'\{.+?\#(\d+)\.\d+\)}',r'(\1)',s))

这样做与大括号内的数字相匹配,然后使用捕获(括号内的部分)来获得所需的字符串。

旁注:最好不要使用字符串作为变量的名称,因为这可能与“字符串”模块冲突。