perl 中的正则表达式失败

perl 中的正则表达式失败

为什么会失败?

WGroleau@MBP Chords % perl -p -i -e '(Trinidad|Donoso|Clifton|Frincke|Little|Church|Antonio) XYZ :\1\t:g;' *txt 
Bareword found where operator expected at -e line 1, near ") XYZ"
    (Missing operator before XYZ?)

我过去曾多次使用过这种语法,没有出现此错误(据我所记得)。

答案1

您能否测试一下:

perl -i -pe 's:(Trinidad|Donoso|Clifton|Frincke|Little|Church|Antonio) XYZ :$1\t:g' *txt

您错过了替换的第一部分:

s:

而在 perl 中,捕获组是$1,不是\1(也许在两种情况下都可以工作)。

相关内容