کپچر و جایگزینی
گروهبندی با ()، متغیرهای $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 }
خلاصه
- () کپچر → $1, $2...
- s/از/به/ جایگزینی، g برای همه
- کپچر در جایگزینی قابل استفاده است
این مبحث بخشی از دوره آموزش کامل پرل است.