\ Q被忽略它接缝

时间:2017-01-04 16:23:01

标签: regex perl

当我使用\Q$btype时,当我使用center进行硬编码时,有人可以告诉我为什么我的脚本在我使用$$时会搜索/替换吗?

该脚本假设在\end{center}之后插入#!/usr/bin/perl my $line = '\end{tabular} \end{center} end:text '; my $btype = "center"; $line =~ s/\\end\{\Q$btype\}/\\end\{\Q$btype\}\$\$/g; print "$line\n";

{{1}}

1 个答案:

答案 0 :(得分:6)

您需要停止转义:

$line =~ s/\\end\{\Q$btype\E\}/\\end\{$btype\}\$\$/g;
#                  here __^^

可以减少到:

$line =~ s/\\end\{\Q$btype\E\}\K/\$\$/g;    # 5.10+

$line =~ s/(\\end\{\Q$btype\E\})/$1\$\$/g;

$line =~ s/\\end\{\Q$btype\E\}/$&\$\$/g;

来自ThisSuitIsBlackNot的评论:
由于performance issue,请不要在v5.20之前将它与perl一起使用。

$line =~ s/(?<=\\end\{\Q$btype\E\})/\$\$/g;