Perl Grep 查找匹配字符串开头的内容

问题描述 投票:0回答:1

考虑以下代码:

my @Array = ("Case Number: CV-24-987654", 
    "Case Title: BIG NATIONAL BANK vs. IMA N DEFAULT, ET AL.", 
    "Case Designation: FORECLOSURE MARSH. OF LIEN", 
    "Filing Date: 08/10/2024", 
    "Judge: WILL RULE", 
    "Mediator: N/A",
    "Next Action: N/A", 
    "Last Status: INACTIVE",
    "Last Status Date: 10/04/2024", 
    "Prayer Amount: \$115,958.65");
    
    my $index = grep { $Array[$_] eq 'Prayer Amount:%' } 0 .. $#Array;
    
    print "My Index Number Is: $index\n";
    

我只需要匹配字符串的开头即可找到包含短语“祈祷金额:”的元素位置我尝试使用通配符 % 但它仍然返回 0。

我该如何改进这段代码?

提前致谢!

perl grep
1个回答
0
投票

首先,请注意,您需要在

grep
上强制使用列表上下文,否则它将返回匹配的数量而不是匹配的元素。这可以通过将作业的 LHS 括在括号中来实现:

my ($index) = grep ...
#  ~      ~

eq
比较时没有通配符。您可以使用索引

my ($index) = grep {  0 == index $Array[$_], 'Prayer Amount:' } 0 .. $#Array;

或者,您可以使用正则表达式:

my ($index) = grep {  $Array[$_] =~ /^Prayer Amount:/ } 0 .. $#Array;

^
仅匹配字符串的开头。

© www.soinside.com 2019 - 2024. All rights reserved.