کپچر و جایگزینی

گروه‌بندی با ()، متغیرهای $1..$9 و جایگزینی با s///.

کپچر با پرانتز

پرانتز در regex بخشی از تطبیق را «می‌گیرد» و در $1، $2... می‌گذارد:

my $date = "2024-06-15";

if ($date =~ /(\d{4})-(\d{2})-(\d{2})/) {
  say "سال: $1";       { 2024 }
  say "ماه: $2";       { 06 }
  say "روز: $3";       { 15 }
}

کپچر در لیست

my $str = "Hello Perl World";
my ($word) = $str =~ /(\w+) Perl/;
say $word;      { Hello — کلمه قبل از Perl }

s/// — جایگزینی

my $s = "foo bar foo";
$s =~ s/foo/XXX/;       { فقط اولی! }
say $s;                 { XXX bar foo }

پرچم g — همه موارد

my $t = "a1b2c3";
$t =~ s/\d/[&]/g;       { همه ارقام }
say $t;                 { a[1]b[2]c[3] }

کپچر در جایگزینی

my $name = "ali, sara";
$name =~ s/(\w+)/\u$1/g;    { \u = حرف اول بزرگ }
say $name;                   { Ali, Sara }

شمارش جایگزینی

my $text = "cat dog cat bird cat";
my $count = ($text =~ s/cat/CAT/g);
say "تعداد: $count";      { 3 }

مثال: استخراج ایمیل

my $line = "Contact: ali@example.com for info";
if ($line =~ /(\w+\@\w+\.\w+)/) {
  say "ایمیل: $1";
}

مثال: تبدیل فرمت تاریخ

my $date = "2024-06-15";
$date =~ s/(\d{4})-(\d{2})-(\d{2})/$3\/$2\/$1/;
say $date;      { 15/06/2024 }

خلاصه

این مبحث بخشی از دوره آموزش کامل پرل است.

ابزارهای مرتبط