Perl正则表达式中的符号(@)

ida*_*anp -1 regex perl

是什么意思@,并@@在此Perl的正则表达式(从C代码删除评论):

$line =~ s@//.*@@;
Run Code Online (Sandbox Code Playgroud)

有什么区别$line =~ s///.*//;

@文档中找不到任何引用

mos*_*svy 6

是什么意思@,并@@在此Perl的正则表达式

它没有任何意义。该s(替代),操作员可以使用任何分隔符,与配对的分隔符的特殊情况({}<>[]())。同样可以写成s,//.*,,s#//.*##s{//.*}{}

如果/不使用@或其他定界符替换,则必须在正则表达式和替换中对其进行转义,这会给人以类似丑陋的印象s/\/\/.*//

这是在所有记录“报价和报价状运算符”perlop(1)手册页-包括特殊处理的单引号(的')分隔,从而防止可变内插。

有什么区别$line =~ s///.*//;

不同之处在于该示例已损坏且无法正常工作。

  • 也许我们可以评论一下,原始代码选择@作为分隔符,而不是其他某些字符,原因是它们不想在正则表达式中转义其他字符。 (2认同)