Как я могу сохранить только числа в переменной в Perl?

#regex #perl

#регулярное выражение #perl

Вопрос:

У меня есть переменная, подобная приведенной ниже:

G12345(@@)

Как я могу сохранить в переменной только числа 12345. Я делал это раньше в PHP, но я не могу найти способ в Perl.

Ответ №1:

$v =~ s/D//g; должно сработать.

(Регулярное выражение заменяет «Не число» на «ничего» глобально)

Комментарии:

1. Это регулярное выражение. Это выполняет замену. Оно заменяет «Не число» на «ничего». Это делает это глобально для каждого бита переменной.

Ответ №2:

Это также можно сделать без регулярных выражений: Transliterate: tr///

 use warnings;
use strict;

my $s = 'G12345(@@)';
$s =~ tr/0-9//cd;
print "$sn";

__END__

12345
  

Ответ №3:

Замените любые нечисловые символы пустой строкой (D нечисловой):

 $var =~ s/D //g;
  

Ответ №4:

Вы также можете сделать это таким образом:

 my ( $number ) = $string =~ /(d )/;
  

Это означает, что если бы после ‘(@@)’ стояли какие-то другие цифры — по какой-либо причине вы бы внезапно не объединили эти цифры с числом, которое находится между ‘G’ и ‘(‘. Таким образом, метод capture гарантирует, что вы получите первый набор смежных цифр.