Regex perl单行正则表达式转义^character

Regex perl单行正则表达式转义^character,regex,perl,Regex,Perl,我有以^character开头的行,我想以^character开头。但这不是沃克林 echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="^./mnt/" 如何将此正则表达式与作为参数传递的输入regularexpression匹配 这一个可以工作,但我想让它在perl中工作 #echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="\\^./mnt/" ^

我有以^character开头的行,我想以^character开头。但这不是沃克林

echo "^./mnt/" |perl -slane ' print if m#^$line$#o' -- -line="^./mnt/"
如何将此正则表达式与作为参数传递的输入regularexpression匹配

这一个可以工作,但我想让它在perl中工作

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

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


echo“^./mnt/”| perl-slane'print if m#^$line$#o'--line=“\^\/mnt\/”
可能
m#^\Q$line\E#
m#^\Q$\E#
但不确定,因为我在windoz box

上,要将文本转换为正则模式(也许可以使用EMETA\Q>)

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

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

我的问题是我将^./mnt/作为参数传递给perl,我将如何在perl内部进行esacpe?是的,如果m ^^Q$line\E$line=“^./mnt/”^./mnt/“| perl-slane”打印,则它将起作用
echo "^./mnt/" |perl -slne'print if $_ eq $line' -- -line="^./mnt/"