gpt4 book ai didi

regex - 用于匹配 protected 分隔值的正则表达式

转载 作者:行者123 更新时间:2023-12-02 02:13:29 25 4
gpt4 key购买 nike

我想要一个正则表达式来匹配分隔值和一些可以包含分隔符的 protected 值。

例如:

"A,B,{C,D,E},F"

会给出:

  • “一个”
  • “乙”
  • “{C,D,E}”
  • “F”

请注意 protected 值可以嵌套,如下所示:

"A,B,{C,D,{E,F}},G"

会给出:

  • “一个”
  • “乙”
  • “{C,D,{E,F}}”
  • “G”

我已经用字符迭代对该功能进行了编码,如下所示:

sub Parse
{
my @item;

my $curly;
my $string;
foreach(split //)
{
$_ eq "{" and ++$curly;
$_ eq "}" and --$curly;

if(!$curly && /[,:]/)
{
push @item, $string;
undef $string;
next;
}
$string .= $_;
}

push @item, $string;
return @item;
}

但使用正则表达式肯定会好得多。

最佳答案

支持嵌套的正则表达式如下所示:

my @items;
push @items, $1 while
/
(?: ^ | \G , )
(
(?: [^,{}]+
| (
\{
(?: [^{}]
| (?2)
)*
\}
)
| # Empty
)
)
/xg;

$ perl -E'$_ = shift; ... say for @items;' 'A,B,{C,D,{E,F}},G'
A
B
{C,D,{E,F}}
G

假定有效输入,因为它不能同时提取和验证。 (好吧,并非没有让事情变得非常困惑。)

关于regex - 用于匹配 protected 分隔值的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11683108/

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