【问题标题】:Perl: Unusual RegExpPerl:不寻常的正则表达式
【发布时间】:2012-05-08 18:55:25
【问题描述】:

我在 Perl 脚本中遇到了这个正则表达式:

$parent_file =~ s@^\Q$CurrentWorkDirForFile\E/@@

当前工作目录由 cwd 填充。

谁能解释一下这个条目是什么?

【问题讨论】:

    标签: regex perl


    【解决方案1】:

    在 perl 中,您可以(几乎)使用任何字符来分隔正则表达式。所以这相当于s/^\Q$CurrentWorkDirForFile\E///\Q\E 禁用/启用特殊模式元字符的解释。因此,例如,/\Q+\E/ 将匹配文字加号,即使 + 是正则表达式中的特殊字符。

    【讨论】:

    • 你错过了一个斜线...\E/@@,这可能是改变分隔符的原因。等效的正则表达式是 s/^\Q$CurrentWorkDirForFile\E\///,带有轻微的“倾斜牙签综合症”。
    • 只有一点:插值发生在正则表达式被解析之前,更重要的是,在\Q..\E被执行之前。这意味着\Q..\E 不会阻止插值,并且会影响任何插值字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多