Perl Regex находит значение слишком маленьким и добавляется - PullRequest
0 голосов
/ 17 октября 2018

Я работаю над заданием, которое требует, чтобы я прочитал несколько имен и телефонную книгу и, по сути, создал поиск, похожий на номеронабиратель на вашем телефоне.Если номер состоит только из ххх-хххх, тогда необходимо добавить код города.Я успешно могу выбрать строки, которые состоят из 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 сохраняется в массиве моей телефонной книги.Но когда я звоню splitIndex [1] (номер телефона), я получаю пустую строку.

1 Ответ

0 голосов
/ 17 октября 2018

Проблема заключалась в том, что я использовал замену, а не тег соответствия в строке.

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

К

$splitIndex[1] =~ m/^(\d{3})-(\d{4})/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...