【发布时间】:2012-05-08 18:55:25
【问题描述】:
我在 Perl 脚本中遇到了这个正则表达式:
$parent_file =~ s@^\Q$CurrentWorkDirForFile\E/@@
当前工作目录由 cwd 填充。
谁能解释一下这个条目是什么?
【问题讨论】:
我在 Perl 脚本中遇到了这个正则表达式:
$parent_file =~ s@^\Q$CurrentWorkDirForFile\E/@@
当前工作目录由 cwd 填充。
谁能解释一下这个条目是什么?
【问题讨论】:
在 perl 中,您可以(几乎)使用任何字符来分隔正则表达式。所以这相当于s/^\Q$CurrentWorkDirForFile\E///。 \Q 和 \E 禁用/启用特殊模式元字符的解释。因此,例如,/\Q+\E/ 将匹配文字加号,即使 + 是正则表达式中的特殊字符。
【讨论】:
...\E/@@,这可能是改变分隔符的原因。等效的正则表达式是 s/^\Q$CurrentWorkDirForFile\E\///,带有轻微的“倾斜牙签综合症”。
\Q..\E被执行之前。这意味着\Q..\E 不会阻止插值,并且会影响任何插值字符串。