我有一堆C源代码文件,调用free(ptr)
。我想用myfree(ptr)
替换所有那些。我知道正则表达式(free)\(.*\)
将与free
匹配,但如何仅替换free
而不替换括号中的部分?我尝试过
find . -name '*.txt' |xargs perl -pi -e 's/(free)\(.*\)/(myfree)\(.*\)/g'
那个人最终用free(ptr)
取代myfree(.*)
,而不是我想要的。我觉得这是一个常见的问题,但没有找到任何东西。
答案 0 :(得分:1)
尝试
find . -name '*.txt' |xargs perl -pi -e 's/(free)(\(.*\))/myfree$2/g'
我们将\(.*\)
替换为$2
,表示我们希望将其替换为第二个捕获组。
请注意,我们还在括号内单独附上了\(.*\)
。