Rob*_*oli 4 regex perl ascii split delimited-text
我在Perl中有以下代码:
if (index ($retval, $_[2]) != -1) {
@fs = split ($_[2], $_[1]);
Run Code Online (Sandbox Code Playgroud)
$_[2]是分隔符变量,$_[1]是分隔符可能存在的字符串.($_[0]在别处使用)您可能已经猜到这些代码在这些变量名称的子例程中.
无论如何,在我的问题上,当我的分隔符是无关紧要的东西'a'或':'代码工作应该如此.但是,当它被Perl正则表达式解析时,就像一个'\'字符一样,那么它就不会像它应该的那样工作.这是有道理的,因为在拆分函数Perl会看到类似的东西:
split (/\/, $_[1]);
Run Code Online (Sandbox Code Playgroud)
这根本没有意义,因为它会想要这个:
split (/\//, $_[1]);
Run Code Online (Sandbox Code Playgroud)
因此,考虑到所有这一点,我无法回答的问题是:"我如何制作它以便我放入的任何分隔符$_[2]或所有ASCII字符都被视为它应该是的字符和没有被解释为别的什么?"
提前致谢,
罗伯特
fri*_*edo 13
你可以使用quotemeta$_[2]正确转义,这样它就可以在正则表达式中运行而不会被破坏.这应该这样做:
my $quoted = quotemeta $_[2];
@fs = split( $quoted, $_[1] );
Run Code Online (Sandbox Code Playgroud)
或者,您可以在正则表达式中使用\ Q来逃避它.请参阅perlre中的 "转义序列" .