繁体   English   中英

perl-在不带引号的字符串中转义特殊字符

[英]perl - escape special characters in string without quotemeta

我有一个带有特殊字符和换行符的Perl字符串,需要将其传递给命令行实用程序(除非转义,否则它将不接受特殊字符)。

如何用前面的\\替换每个特殊字符?

我可以分别替换每个字符,但想知道是否有更好的方法?

从电子表格中的单元格读取时,字符串如下。

<meta property="og:url" content="http://www.example.com/test/testpage.aspx?ID=OO3JUPVSWjs%3d&ContentTypeId=qbeAILfmBIE%3d" />

我试过$str =~ /^\\Q$str\\E/;

但是将变量传递到命令行实用程序时失败。

正如您已经指出的那样,您可以只使用quotemeta

$str = quotemeta $str;

但是,如果由于某种原因这不好,您可以构建自己的想要转义的字符类

$str =~ s/([\\'"])/\\$1/g;

您可以构建模式并分别执行匹配:

my $pattern = "$bar";
my $regex = "\Q$pattern\E";

if ( q(foo $bar baz) =~ /$regex/ ) {
    print "match\n"
}
else {
    print "no match\n"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM