【问题标题】:Perl Regex finding value too small and appendingPerl 正则表达式发现值太小并附加
【发布时间】:2018-10-17 18:40:45
【问题描述】:

我正在处理一项任务,该任务要求我阅读一堆姓名和电话簿,并创建一个类似于手机拨号器的搜索。如果号码仅由 xxx-xxxx 组成,则应附加区号。我成功地挑选出由 xxx-xxxx 组成的字符串,但是当我尝试打印该字符串时,我只得到一个空行。当我调用上一个索引时,它会成功打印出名称。

foreach my $i (0 .. $#phoneBook) {
    my @splitIndex = split(':', $phoneBook[$i]); #index 0 and 1 of splitIndex
    #If the length of the number is too short append the 701 before
    if($splitIndex[1] =~ s/^(\d{3})-(\d{4})//) {
      print "$splitIndex[1]\n";
    }
    foreach my $j (0 .. $#splitIndex) {
      #print "$splitIndex[$j]";
    }
    if(($splitIndex[0] =~ /$searchValue/i) || ($splitIndex[1] =~ /$searchValue/i)) {
      #print "Found\n";
    } else {
      #print "Not Found $searchValue\n";
    }
  }

在我的文件中,文本 John:888-8888 保存在我的 phoneBook 数组中。但是当我调用 splitIndex[1](电话号码)时,我得到一个空行。

【问题讨论】:

  • 提示:for/foreach my $entry (@phoneBook) 更易于阅读且不易出错。

标签: regex perl search


【解决方案1】:

问题是我在行中使用了替代而不是匹配标记。

$splitIndex[1] =~ s/^(\d{3})-(\d{4})//

$splitIndex[1] =~ m/^(\d{3})-(\d{4})/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多