Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl命令行搜索并替换为多个表达式_Perl - Fatal编程技术网

Perl命令行搜索并替换为多个表达式

Perl命令行搜索并替换为多个表达式,perl,Perl,我正在使用Perl搜索和替换多个正则表达式: 当我执行以下命令时,我得到一个错误: prompt>find“*.cpp”| xargs perl-i-pe的/###(\W)/\1/g'-pe的/(\W)##/\1/g” 在-e第2行“s/(\W)##/\1/g”附近出现语法错误 由于编译错误,-e的执行已中止。 xargs:perl:退出,状态为255;流产 有多个-e在Perl中是有效的,那么为什么这不起作用呢?是否有解决方案?允许使用多个-e 您缺少;' find "*.cpp" | xa

我正在使用Perl搜索和替换多个正则表达式: 当我执行以下命令时,我得到一个错误:

prompt>find“*.cpp”| xargs perl-i-pe的/###(\W)/\1/g'-pe的/(\W)##/\1/g”
在-e第2行“s/(\W)##/\1/g”附近出现语法错误
由于编译错误,-e的执行已中止。
xargs:perl:退出,状态为255;流产

有多个
-e
在Perl中是有效的,那么为什么这不起作用呢?是否有解决方案?

允许使用多个
-e

您缺少
;'

find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g;' -pe 's/(\W)##/\1/g;'
Perl语句必须以
结尾。
块中的Final语句不需要终止分号。

因此,单个
-e
没有
将起作用,但您必须添加
当您有多个
-e
语句时。

您可以用一个替代项替换这两个正则表达式:
s/##(?=\W)|(?@TLP我是Perl的不速之客;请你解释一下?=和?它们是什么意思?它们是环顾四周的断言,你可以在中阅读更多关于它们的内容。它们是零宽度的,所以它们只检查,不删除。非常感谢你的回答。我当时正绞尽脑汁想弄清楚这一点。或者
xargs Perl-I-pe的s/##(\W)/\1/g;s/(\W)#/\1/g;