PERL - статьи


Использование встроенных переменных


  • $' - подстрока, следующая за совпадением.
  • $& - совпадение с шаблоном поиска
  • $` - подстрока, расположенная перед совпадением
  • $^R - результат вычисления утверждения в теле шаблона
  • $n - n-ный фрагмент совпадения
  • \n - n-ный фрагмент совпадения вызываемый в самом шаблоне
  • $+ - фрагмент совпадения
  • $* - разрешает выполнять поиск в многострочных файлах
  • @- - спецмассив, который содержит начальную позицию найденного слова
  • @+ - массив, содержащий позицю последнего найденного слова

$& - совпадение с шаблоном поиска, при последней операции поиска или замены. В отличии от переменной $_, эту переменную переопределять как вздумается нельзя.

$' подстрока за совпадением с шаблоном поиска, е также можно только читать.

$` - подстрока, расположенная перед совпадением, разрешается только е чтение.

$^R - результат вычисления утверждения в теле шаблона для последнего вычисления шаблона, если в нем идет счет или вызывается внешняя программа:

$qwer="lala"; $qwer=~ /x(?{$var=5})/; print $^R; 5

$+ - фрагмент совпадения в шаблоне, который в нем был последним в круглых скобках. Разрешается только чтение $+.

$* - разрешает выполнять поиск в многострочных файлах, булева переменная, если она взведена в 1, то символы шаблона поиска ^ и $ сопоставляются позициям перед и после внутренних символов новой строки, если 0, то от начала текста и до конца текста:

$kim="lala\nfa\eti\nzvuki..."; $kim=~~ /^eti/; #совпадение не нашлось $*=1; $kim=~~ /^eti/; #совпадение нашлось

$n - n-ный фрагмент совпадения:

print "$1 $2 $3\n" if(/^(\d)(\w)(\W)$/);

\n - n-ный фрагмент совпадения вызываемый в самом шаблоне, например поиск гиперссылок:

/a href=(['"])(.*?)\1>/

Например нужно занести в массив только цифры из строчки "12@#34@@#@@###34@@##67##@@#@#@34":

$_='12@#34@@#@@###34@@##67##@@#@#@34'; s/@/#/g; s/(#)\1+/$1/g; print join /\n/, split /#/, $_;

Регулярное выражение s/(#)\1+/$1/g; изпользует повторение переменной $1 (квантификатор +) и если оно есть, то заменяет все подряд идущие # между цифрами на одну #, содержащуюся в$1(переменная $1 существует, если часть шаблона или шаблон указать в круглых скобках).




Начало  Назад  Вперед