|
|
Как в perl regex обнаружить несколько одинаковых, подряд идущих, символов. |
[обсудить]
|
| my $a="ttttest"; # Нужно определить 4 подряд идущих символа
if ($a =~ /([a-z])\1{3}/ ){
print "4 совпало.\n";
}
где, \1 - обратная ссылка на совпадение в скобках, {3} - повтор 3 раза.
|
|
|
|
|
Как при использовании переменной в regex запретить интерпретацию спец. символов. |
[обсудить]
|
| Нужно поместить переменную между "\Q" и "\E":
$var =~ m/\Q$mask\E/;
Можно отдельно вызвать функцию для экранирования:
$var = quotemeta($var);
|
|
|
|
|
Как в Perl вызывать функции внутри regex. |
[обсудить]
|
| Пример замены первой буквы в строке с нижнего регистра на верхний:
$a =~ s/^(\w)(.*)$/uc($1).$2/e;
|
|
|
|
|
Как используя Perl разбить число на триады |
Автор: gr
[обсудить]
|
| $num = 100000000000000;
$num =~ s/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/$1,/g;
|
|
|
|
|
Как в Perl вырезать у строки лидирующие пробелы |
[комментарии]
|
| $str =~ s/^\s*([^\s]?.*)$/$1/;
$str =~ s/^(.*[^\s])\s*$/$1/; # два regex работают быстрее, чем один более сложный
|
|
|
|
|
Как закодировать и раскодировать строку %XX в URL. |
[комментарии]
|
| Закодировать:
$toencode =~ s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg;
Раскодировать:
$todecode =~ s/%(..)/pack("c",hex($1))/ge;
|
|
|
|