gpt4 book ai didi

regex - 是否存在包含转义序列的字符串的纯正则表达式拆分?

转载 作者:行者123 更新时间:2023-12-02 08:36:39 26 4
gpt4 key购买 nike

给定一串管道分隔值(称为 $psv ),我希望能够按这些管道进行分割并填充一个数组。但是,字符串还可以包含转义管道 ( \| ) 和转义转义 ( \\ ),这两者都被视为纯粹的文字。对于这个问题,我有几个解决方案:

  • 将两个转义序列替换为 $psv 中找不到的一些随机字符串。 , split(/\|/, $psv) ,替换回原来的字符
  • 循环$psv ,逐个字符

我认为这两者都会起作用。但为了获得最大的多巴胺泛滥,我只想用一个 split() 来做到这一点打电话,别无其他。那么有正则表达式吗?

最佳答案

您不需要使用 split 来完成此任务。另一种选择是:

my $psv = "aaa|bbb||ccc|\\|\\|\\||\\\\\\\\\\\\";
print "$psv\n";

my @words = map { s/\\([\\|])/$1/g; $_; } ($psv =~ /(?:^|\|) ((?:\\[\\|] | [^|])*)/gx);
printf("%s\n", join(", ", @words));

正则表达式可能看起来很吓人,但很容易解释。它匹配由管道分隔的每个单词。它从字符串的开头或管道分隔符开始。然后跟随任意数量的转义序列 (\ + \| 之一) 或除管道之外的任意字符。

map 中的正则表达式只是将转义序列替换为它们真正的含义。

关于regex - 是否存在包含转义序列的字符串的纯正则表达式拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3208136/

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