в следующем:Как проверить, что соответствует регулярному выражению?
~$ perl -e '
my $var = "March 1998";
$var =~ /([0-9]*)/;
print "$1\n";
Ничего не печатается. Я не мог понять, почему, но, немного подумав об этом, я думаю, что он соответствует только части числа, так как ему требуется 0 или более случаев числа, и вся строка удовлетворяет этому. Но как я могу увидеть/«захватить» то, что он на самом деле соответствует, чтобы подтвердить мое предположение>
Как насчет использования '$ &'? Но если вы хотите проверить, совпадает ли он как минимум с 1 номером, вам нужно использовать '+' вместо '*'. – AntonH
Я думаю, вы хотите '[0-9] +', который чаще всего записывается как '\ d +'. – squiguy
Кто-то с большим количеством времени может объяснить это лучше, но проблема заключается в '*'. Это означает «ноль или больше», и это жадно. Таким образом, он соответствует одному из этих чисел в нулевое время и называет его днем. Результат матча «true» ... но захват пуст (нулевое время). '+' - это «один или несколько», поэтому вы получаете «1998» в захвате. –