regex – 如何将字符串转换为在Perl中匹配的正则表达式?

前端之家收集整理的这篇文章主要介绍了regex – 如何将字符串转换为在Perl中匹配的正则表达式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何将字符串转换为在Perl中与自身匹配的正则表达式?

我有一组像这样的字符串:

Enter your selection:
Enter Code (Navigate,Abandon,Copy,Exit,?):

我想将它们转换为正则表达式,我可以匹配其他东西.在大多数情况下,字符串与正则表达式相同,但在上面的第二个示例中没有,因为(和?在正则表达式中有意义.因此第二个字符串需要变成如下表达式:

Enter Code \(Navigate,\?\):

我不需要匹配太严格,所以像这样的东西会很好:

Enter Code .Navigate,..:

我目前的想法是,我可以使用类似的东西:

s/[\?\(\)]/./g;

但我真的不知道字符串列表中会有哪些字符,如果我错过了一个特殊字符,那么我可能永远不会注意到程序没有按预期运行.我觉得应该有一个普遍的解决方案.

谢谢.

解决方法

正如Brad Gilbert评论使用 quotemeta

my $regex = qr/^\Q$string\E$/;

要么

my $quoted = quoteMeta $string;
my $regex2 = qr/^$quoted$/;

猜你在找的Perl相关文章