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 }

خلاصه

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

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