perl one line regex escape ^ character

时间:2011-03-07 21:02:51

标签: regex perl

我的行以^字符开头,我想开始行和^ charater。但它没有意义。

echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="^./mnt/"

如何将此正则表达式与作为参数传递的输入regularrexpression匹配。

这个可行,但我想让它与perl一起工作。

#echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="\\^./mnt/"
^./mnt/

由于 SR

3 个答案:

答案 0 :(得分:2)

您需要转义参数中的特殊字符(就像它直接嵌入到正则表达式中一样)。

echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="\^\.\/mnt\/"

答案 1 :(得分:2)

要将文本转换为正则表达式模式,请使用quotemeta(可能通过\ Q .. \ E)。

echo "^./mnt/" |perl -slne'print if /^\Q$line\E$/' -- -line="^./mnt/"

在这种情况下,您可以使用

echo "^./mnt/" |perl -slne'print if $_ eq $line' -- -line="^./mnt/"

答案 2 :(得分:1)

可能m#^\Q$line\E#m#^\Q$_\E#但不确定,因为我在windoz盒子上