gpt4 book ai didi

regex - 无法让 Perl 正则表达式成为非贪婪的

转载 作者:行者123 更新时间:2023-12-01 11:23:08 25 4
gpt4 key购买 nike

无论我做什么,我的正则表达式都匹配行中的最后一组字母字符。我希望它只匹配第一次出现。

我曾尝试使用非贪婪运算符,但它顽固地匹配最右边的一组字母字符,在本例中为 $1 赋予值“Trig”,这不是我想要的。我希望 $1 成为“02.04.07.06 Geerite”。

代码

elsif ($line =~ /\s(\d{2}\.\d{2}\.\d{2}\.\d{2}\s[[:alpha:]]*?)/)
{
print OUTPUT "NT5 " . $1 . " | | \n";
}

来源

02.04.07.06 Geerite Cu8S5 R 3m, R 3m, or R 32 Trig

输出

NT2 32 Trig | |

所以换句话说,我想要这个输出:

NT2 02.04.07.06 Geerite | |

最佳答案

如果我把你的代码改成

$line="     02.04.07.06 Geerite Cu8S5 R 3m, R 3m, or R 32 Trig ";
if ($line =~ /\s(\d{2}\.\d{2}\.\d{2}\.\d{2}\s[[:alpha:]]*?)/) { print "NT5 ".$1." | | \n"; }

我得到这个输出:

NT5 02.04.07.06  | | 

使 * 非贪婪,Geerite 一词包含在输出中。

您观察到的输出可能来自 if-elsif-else 树的不同分支。

关于regex - 无法让 Perl 正则表达式成为非贪婪的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432801/

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