gpt4 book ai didi

regex - 如何处理 Perl 正则表达式中的每个 ASCII 字符(包括正则表达式特殊字符)?

转载 作者:行者123 更新时间:2023-12-03 18:18:43 26 4
gpt4 key购买 nike

我在 Perl 中有以下代码:

if (index ($retval, $_[2]) != -1) {
@fs = split ($_[2], $_[1]);
$_[2]是分隔符变量和 $_[1]是分隔符可能存在的字符串。( $_[0] 在别处使用)您可能已经猜到这段代码在这些变量名的子例程中。

无论如何,在我的问题上,当我的分隔符是像 'a' 这样无害的东西时或 ':'代码像它应该的那样工作。但是,当它会被 Perl 正则表达式解析时,例如 '\'字符,那么它就不会像预期的那样工作。这是有道理的,因为在拆分函数中 Perl 会看到如下内容:
split (/\/, $_[1]); 

这对它毫无意义,因为它想要这个:
split (/\//, $_[1]);

因此,考虑到所有这些,我无法回答的问题是:“我如何才能使我放入 $_[2] 或所有 ASCII 字符中的任何分隔符都被视为它应该的字符是而不是被解释为别的东西?”

提前致谢,

罗伯特

最佳答案

您可以使用 quotemeta逃离$_[2]正确,所以它可以在正则表达式中工作而不会被破坏。这应该这样做:

my $quoted = quotemeta $_[2];
@fs = split( $quoted, $_[1] );

或者,您可以在正则表达式中使用\Q 来转义它。参见 perlre 中的“转义序列” .

关于regex - 如何处理 Perl 正则表达式中的每个 ASCII 字符(包括正则表达式特殊字符)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/754028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com