Это действительно базовый вопрос регулярных выражений, но, поскольку я не могу понять, почему в некоторых обстоятельствах не удается найти совпадение, я решил опубликовать его, чтобы узнать, сможет ли кто-нибудь еще указать, что мне не хватает.
Я пытаюсь извлечь 2 набора цифр из строк вида:
12309123098_102938120938120938
1321312_103810312032123
123123123_10983094854905490
38293827_1293120938129308
Я использую следующий код для обработки каждой строки:
if($string && $string =~ /^(\d)+_(\d)+$/) {
if(IsInteger($1) && IsInteger($2)) { print "success ('$1','$2')"; }
else { print "fail"; }
}
Где функция IsInterger () выглядит следующим образом:
sub IsInteger {
my $integer = shift;
if($integer && $integer =~ /^\d+$/) { return 1; }
return;
}
Эта функция, кажется, работает большую часть времени, но по какой-то причине не работает:
1287123437_1268098784380
1287123437_1267589971660
Любые идеи о том, почему они терпят неудачу, а другие преуспевают? Заранее спасибо за помощь!