Чтобы сделать это с помощью регулярного выражения, попробуйте следующее:
my $var = "04032010";
$var =~ s{ (\d{2}) (\d{2}) (\d{4}) }{$1/$2/$3}x;
print $var;
\d
означает совпадение одной цифры. И {n}
означает предшествующий совпадающий символ n раз. В сочетании вы получаете \d{2}
для совпадения с двумя цифрами или \d{4}
для сопоставления с четырьмя цифрами. Окружая каждый набор в скобках, совпадение будет сохранено в переменной $1, $2, $3
... и т. Д.
В некоторых предыдущих ответах для сопоставления использовался .
, это не очень хорошая вещь, потому что он будет соответствовать любому персонажу. Тот, который мы построили здесь, гораздо более строг в том, что он примет.
Вы заметите, что я использовал дополнительный интервал в регулярном выражении, я использовал модификатор x
, чтобы заставить двигатель игнорировать пробелы в моем регулярном выражении. Может быть полезно сделать регулярное выражение более читабельным.
Сравнить s{(\d{2})(\d{2})(\d{4})}{$1/$2/$3}x;
против s{ (\d{2}) (\d{2}) (\d{4}) }{$1/$2/$3}x;