如何使用Python正则表达式将foo(...)替换为括号内的文本?
解决方案
要实现你需要的替换效果,别用re.findall()了,直接用re.sub()——这才是Python正则模块里专门做文本替换的方法。
具体代码实现:
import re my_string = "a + (foo(b)*foo(c))" # 执行替换操作 result = re.sub(r'foo\((.*?)\)', r'\1', my_string) print(result)
逻辑说明:
- 正则表达式
r'foo\((.*?)\)'会匹配所有foo(xxx)格式的片段,其中(.*?)是非贪婪捕获组,专门提取括号内部的内容; - 替换参数里的
r'\1'代表引用第一个捕获组的内容,相当于把整个foo(xxx)直接替换成括号里的xxx; - 运行后输出结果就是你期望的:
a + (b*c)
内容的提问来源于stack exchange,提问作者Justin Davis
相关产品推荐
相关产品推荐

