Python正则表达式:捕获内容并反向引用实现字符串替换
解决正则反向引用问题
在Python的re.sub()中,你可以用\1来反向引用第一个捕获组(也就是你用括号(\S*)捕获的内容),注意要给替换字符串加上原始字符串前缀r,避免转义字符被错误解析。
修正后的代码如下:
import re string = 'void testsuite_testname(void)' # 用\1引用捕获到的testname,正则和替换串都加r前缀避免转义问题 string2 = re.sub(r'void testsuite_(\S*)\(void\)', r'TEST_F(other_stuff, \1)', string) print(string2) # 输出结果:TEST_F(other_stuff, testname)
额外说明:
- 原始字符串前缀
r能让Python直接识别字符串中的\为正则语法的一部分,而不是转义符。 - 若有多个捕获组,可依次用
\2、\3来对应引用后续捕获到的内容。
内容的提问来源于stack exchange,提问作者Daniel Navarro
相关产品推荐
相关产品推荐

