gpt4 book ai didi

regex - perl 正则表达式匹配失败

转载 作者:行者123 更新时间:2023-12-04 19:14:47 39 4
gpt4 key购买 nike

我想匹配两个不同的字符串,输出应该是 $1 和 $2,
根据我在这个例子中的说法,如果 $a 是 'xy abc',那么 $1 应该是 'xy abc',$2 应该是 'abc',但是 'abc' 部分是 $3。
你能帮我写一个正则表达式,$1 应该是整个字符串,$2 应该是
有第二部分。
我正在使用 perl 5.8.5。

my @data=('abc xy','xy abc');
foreach my $a ( @data) {
print "\nPattern= $a\n";
if($a=~/(abc (xy)|xy (abc))/) {
print "\nMatch: \$1>$1< \$2>$2< \$3>$3<\n";
}
}

输出:
perl test_reg.pl

Pattern= abc xy

Match: $1>abc xy< $2>xy< $3><

Pattern= xy abc

Match: $1>xy abc< $2>< $3>abc<

最佳答案

可以通过以下方式完成:

(?|(abc (xy))|(xy (abc)))

为什么还要费心去捕捉整个事情呢?您可以使用 $&为了那个原因。
my @data = ('abc xy', 'xy abc');
for(@data) {
print "String: '$_'\n";

if(/(?|abc (xy)|xy (abc))/) {
print "Match: \$&='$&', \$1='$1'\n";
}
}

关于regex - perl 正则表达式匹配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10977876/

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