regex عملی
اعتبارسنجی ایمیل و تاریخ، استخراج داده و پردازش لاگ.
regex در دنیای واقعی
اعتبارسنجی ایمیل (ساده)
sub valid_email {
my ($email) = @_;
return $email =~ /^\w+\@\w+\.\w+$/;
}
say valid_email("ali@test.com") ? "معتبر" : "نامعتبر";
اعتبارسنجی شماره موبایل ایران
sub valid_mobile {
my ($p) = @_;
return $p =~ /^09\d{9}$/;
}
say valid_mobile("09121234567") ? "معتبر" : "نامعتبر";
استخراج از لاگ
my @logs = (
"2024-06-15 ERROR: Database failed",
"2024-06-15 INFO: User logged in",
"2024-06-16 ERROR: Timeout",
);
foreach my $line (@logs) {
if ($line =~ /^(\d{4}-\d{2}-\d{2}) (ERROR|INFO): (.+)$/) {
my ($date, $level, $msg) = ($1, $2, $3);
say "[$level] $date → $msg" if $level eq "ERROR";
}
}
پاکسازی ورودی
sub clean {
my ($s) = @_;
$s =~ s/^\s+//; { فاصله اول }
$s =~ s/\s+$//; { فاصله آخر }
$s =~ s/\s+/ /g; { چند فاصله → یکی }
return $s;
}
say "[" . clean(" hello world ") . "]"; { [hello world] }
شمارش کلمات با regex
my $text = "the quick brown fox jumps";
my @words = ($text =~ /\w+/g); { همه کلمات }
say "تعداد: " . scalar @words; { 5 }
پنهانسازی اطلاعات
my $msg = "کارت: 1234-5678-9012-3456";
$msg =~ s/\d{4}-\d{4}-\d{4}/****-****-****/;
say $msg; { کارت: ****-****-****-3456 }
خلاصه
- اعتبارسنجی: ^الگو$
- استخراج: کپچر + g
- پاکسازی: s/^\s+// و s/\s+$//
این مبحث بخشی از دوره آموزش کامل پرل است.