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

2023-12-15

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

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

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

我想将它们转换为正则表达式,以便我可以将其他内容与它们匹配。在大多数情况下,字符串与正则表达式相同,但在上面的第二个示例中并非如此,因为 ( 和 ? 在正则表达式中具有含义。因此第二个字符串需要成为如下表达式:

Enter Code \(Navigate, Abandon, Copy, Exit, \?\):

我不需要太严格的匹配,所以像这样就可以了:

Enter Code .Navigate, Abandon, Copy, Exit, ..:

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

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

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

Thanks.


正如布拉德吉尔伯特评论使用引用元:

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

or

my $quoted = quotemeta $string;
my $regex2 = qr/^$quoted$/;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Perl 中如何将字符串转换为与自身匹配的正则表达式? 的相关文章

随机推荐