Regex Perl单行正则表达式抛出bash:意外标记`)附近的语法错误&x27;
我有一个PERL one liner,我试图对包含逗号分隔的电子邮件地址列表的配置文件使用它Regex Perl单行正则表达式抛出bash:意外标记`)附近的语法错误&x27;,regex,perl,bash,Regex,Perl,Bash,我有一个PERL one liner,我试图对包含逗号分隔的电子邮件地址列表的配置文件使用它 perl -nle 'print for m/\* Members= (\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*$/i)/g' 返回bash: syntax error near unexpected token `)' 似乎正则表达式与shell的关系不太好。我怀疑有些东西没有被正确地转义,但是由于错误的性质,正则表达式本身我不知
perl -nle 'print for m/\* Members= (\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*$/i)/g'
返回bash:
syntax error near unexpected token `)'
似乎正则表达式与shell的关系不太好。我怀疑有些东西没有被正确地转义,但是由于错误的性质,正则表达式本身我不知道该去哪里寻找。有什么想法吗?那是因为你希望在正则表达式中有一个引用,但shell不知道。这一次,您可以在Perl表达式周围使用双引号:
perl -nle "print for m/\* Members= (\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*$/i)/g"
更一般地说,您需要使用'\'
技巧:
perl -nle 'print for m/\* Members= (\w+([-+.'\'']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*$/i)/g'
“\”
在shell中的单引号字符串中嵌入单引号;第一个引号关闭当前单引号字符串;反斜杠引号嵌入一个引号;最后一个引号开始一个新的单引号字符串。这是因为您希望在正则表达式中有一个单引号,但shell不知道。这一次,您可以在Perl表达式周围使用双引号:
perl -nle "print for m/\* Members= (\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*$/i)/g"
更一般地说,您需要使用'\'
技巧:
perl -nle 'print for m/\* Members= (\w+([-+.'\'']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*$/i)/g'
“\”
在shell中的单引号字符串中嵌入单引号;第一个引号关闭当前单引号字符串;反斜杠引号嵌入一个引号;最后一个引号将开始一个新的单引号字符串。您的问题位于第一个逻辑组中;“
正在关闭要在您希望对其求值之前对其求值的字符串
perl -nle 'print for m/\* Members= (\w+([-+.' <-- that character
您的问题位于您的第一个逻辑组中;
“
正在关闭要在您希望对其求值之前对其求值的字符串
perl -nle 'print for m/\* Members= (\w+([-+.' <-- that character
正如其他人所说,使用“
而不是”
您的正则表达式末尾还有一个错误:
([,])*)*$/i)/g
必须写上:
(,)*$/ig
我不确定您的正则表达式是否能满足您的要求,请显示文件中的一些行以便给您提供更好的答案。正如其他人所说,使用“
而不是”
您的正则表达式末尾还有一个错误:
([,])*)*$/i)/g
必须写上:
(,)*$/ig
我不确定您的正则表达式是否能满足您的要求,请显示文件中的一些行,以便给您提供更好的答案。我想这里突出显示的彩色语法很好地回答了您的问题:)是的,直到您指出,我才注意到这一点。:)我想这里的彩色语法突出显示很好地回答了您的问题:)是的,直到您指出它之前,我都没有注意到。:)隐马尔可夫模型。。。现在我得到了:无与伦比的)在正则表达式;以@oljones为标志:那是因为你真正拥有的
)
比(
在你的模式中更多。我不确定这些额外的是因为复制和粘贴太多,还是应该是\)
,或者什么。嗯。。。现在我得到了:无与伦比的)在正则表达式;以@oljones为标记:那是因为你的模式中的)
确实比(
多。我不确定这些额外的是因为复制和粘贴太多,还是应该是\)
,或者什么。与上面相同的错误<正则表达式中的代码>不匹配);标记为无法在单引号字符串中转义单引号。与上述错误相同<正则表达式中的代码>不匹配);标记为无法在单引号字符串中转义单引号。