История изменений
Исправление perl5_guy, (текущая версия) :
#!/usr/bin/env perl
use v5.26;
my $s = '123 456 789 123';
say 'MATCHED!' if $s =~ /(\d{3}) (?1) (?1) \g1/;
Вот, браток, смотри чего есть. (?n) - это рекурсивные шаблончики. Т.е. на место этой конструкции, подставится шаблон из первой группы (группа - ограниченная скобками вещь). А \g1 - это взадссылка (backreference). Здесь на место метасимвола подставляется строка, которая совпала в первой группе (именно результат совпадения, а не шаблон). Т.е. «эквивалентно», что было понятней, можно переписать этот регвыр для данной строки как-то так:
/\d{3} \d{3} \d{3} 123/
Учите Perl и не болейте, пацаны!
Исправление perl5_guy, :
#!/usr/bin/env perl
use v5.26;
my $s = '123 456 789 123';
say 'MATCHED!' if $s =~ /(\d{3}) (?1) (?1) \g1/;
Вот, браток, смотри чего есть. (?n) - это рекурсивные шаблончики. Т.е. на место этой конструкции, подставь шаблон из первой группы (группа - ограниченная скобками вещь). А \g1 - это взадссылка (backreference). Здесь на место метасимвола подставляется строка, которая совпала в первой группе (именно результат совпадения, а не шаблон). Т.е. «эквивалентно», что было понятней, можно переписать этот регвыр для данной строки как-то так:
/\d{3} \d{3} \d{3} 123/
Учите Perl и не болейте, пацаны!
Исходная версия perl5_guy, :
#!/usr/bin/env perl
use v5.26;
my $s = '123 456 789 123';
say 'MATCHED!' if $s =~ /(\d{3}) (?1) (?1) \g1/;
Вот, браток, смотри чего есть. (?n) - это рекурсивные паттерны. Т.е. на место этой конструкции, подставь паттер из первой группы (группа - ограниченная скобками вещь). А \g1 - это бэкреференс. Здесь на место метасимвола подставляется строка, которая сматчилась в первой группе. Т.е. «эквивалентно» можно переписать этот регвыр для данной строки вот так:
/\d{3} \d{3} \d{3} 123/
Учите Perl и не болейте, пацаны!