Child pages
  • Регулярные выражения
Skip to end of metadata
Go to start of metadata

Используйте флаг "x" для сложных регулярных выражений

Если вы используете действительно сложное регулярное выражение, используйте модификатор "x" и разделите текст пробелами, чтоб он не выглядел как нагромождение мусора.

Используйте удобные ограничители для регулярных выражений

Не используйте наклонную черту в качестве ограничителя когда ваше выражение содержит прямые или обратные наклонные черты:

# Используем удобный ограничитель
$s =~ s{/}{::};
# Это куда нагляднее, чем /\//::/;

Разбивайте сложные регулярные выражения на части

Будет гораздо нагляднее, если Вы составите сложное регулярное выражение из нескольких кусочков. Кусочки можно хранить как в виде строк, так и в виде qr//:

# Строим регексп для матчинга чисел с плавающей точкой...
Readonly my $DIGITS    => qr{ \d+ (?: [.] \d*)? | [.] \d+         }xms;
Readonly my $SIGN      => qr{ [+-]                                }xms;
Readonly my $EXPONENT  => qr{ [Ee] $SIGN? \d+                     }xms;
Readonly my $NUMBER    => qr{ ( ($SIGN?) ($DIGITS) ($EXPONENT?) ) }xms;

Безопасно обрабатывайте данные, получаемые извне

Если Вы используете данные, полученные извне, как есть, тем самым Вы подвергаете систему уязвимости. Используйте квотирование, например, так:

$test =~ m/\b\Q$param_name\E: \s+ (\d+)/x;
  • No labels