perl查找并替换为单引号

时间:2017-06-17 18:41:12

标签: perl

我需要在工作目录中的所有.txt文件中查找/替换以下字符串:

myfunc(l_define,'BASE TABLE')

我尝试了以下操作,它运行时没有错误,但不更新文件。

perl -pi -w -e "s/myfunc(l_define,'BASE')/myfunc(l_define,'BASE',1,1,'')/g;" *.txt

这是一个引用问题吗?

1 个答案:

答案 0 :(得分:2)

在正则表达式中,()之间的内容是捕获组。

因此,对于()个字符,您需要转义它们,以便匹配文字字符。因此,在正则表达式中使用\(\)

因此,像func(akes)这样的正则表达式只匹配funcakes

通常需要转义以匹配正则表达式语法中具有特殊含义的字符:
 . ( ) [ ] + * ? { } ^ $ \ |
如果代码使用类似/的内容而非类似s/a\/b/a-b/g

之类的内容,也会s@a/b@a-b@g

如果你真的不喜欢使用那些反斜杠?
您还可以使用字符类:[(][)]