gpt4 book ai didi

regex - 哪些 Perl 匹配正则表达式的细微差别会导致头痛?

转载 作者:行者123 更新时间:2023-12-04 05:37:59 25 4
gpt4 key购买 nike

此代码未能识别它似乎识别的任何键:

if( $key =~ /upsf|free|ground|sla|pickup|usps/ )

所以我把它改成:
    if( $key eq 'upsf' || $key eq 'free' 
|| $key eq 'ground' || $key eq 'sla'
|| $key eq 'pickup' || $key eq 'usps' )

在我看来,它们在功能上是等效的,所以我试图找出第一个失败的原因。它是 Windows 7 上 XAMPP 下的 Perl,但它也是 Linux 机器上 Apache2 下的 Perl。

这会在 Windows 和 Linux 上打印“搁置它”。
$key = 'upsf';
if( $key =~ /^(upsf|free|ground|sla|pickup|usps)$/ ) {
print 'ship it';
} else {
print 'shelf it';
}

最佳答案

它们不相等,因为第一个比较运算符是“=~”(“包含”),
其中第二个是“eq”(“显式匹配,等于”)。

第一个究竟是如何失败的? $key 的测试值是多少?

$key = 'xxx';
if( $key =~ /upsf|free|ground|sla|pickup|usps/ ) {
print 'ship it';
} else {
print 'shelf it';
}

将打印“搁置它”。
例如, $key='xusps' 将打印 'ship it',通过 '=~' 运算符(“包含”)匹配,这可能不是您的目标。

关于regex - 哪些 Perl 匹配正则表达式的细微差别会导致头痛?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674936/

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