
- •Регулярные выражения
- •Метасимволы
- •Метапоследовательности
- •Обратные ссылки
- •Операции с регулярными выражениями
- •Операция поиска
- •Операция замены
- •Операция транслитерации
- •Операция заключения в кавычки qr//
- •Функции для работы со строками Функция length()
- •Функция pos ()
- •Функция chop()
- •Функция join()
- •Функция split()
- •Функция index ()
- •Функция rindex ()
- •Функция substr( )
- •Функции lс(), uc(), lcfirst(), ucfirst()
- •Расширенный синтаксис регулярных выражений
Функция substr( )
substr <строка>, <позиция> [,<длина> [,<замена>]]
извлекает из строки подстроку заданной длины с указанной позиции и возвращает ее. Если параметр <длина> опущен, возвращается вся оставшаяся часть строки. Если параметр <длина> отрицательный, его абсолютное значение задает количество символов от конца строки, не включаемых в результирующую подстроку. Если параметр <позиция> имеет отрицательное значение, смещение отсчитывается с конца строки. Если задана строка <замена>, то выделенная подстрока замещается ею в параметре <строка>.
Функция substr() может стоять в левой части операции присваивания. Например, в результате выполнения операторов
$Str = "Язык Pascal"; substr($Str, 5,6) - "Perl";
переменная $str получит значение "Язык Perl". Тот же результат будет достигнут, если указать параметр replacement, значение которого будет подставлено в expr вместо выделенной подстроки. Сама подстрока в этом случае возвращается в качестве значения функции substr ().
Функции lс(), uc(), lcfirst(), ucfirst()
предназначены для преобразования строчных букв в прописные и наоборот.
Функция
lc <выражение>
преобразует все прописные буквы выражения в строчные и возвращает полученную строку.
Функция
uc <выражение>
преобразует все строчные буквы выражения в прописные и возвращает полученную строку.
Функция
lcfirst <выражение>
преобразует первый символ выражения в строчный и возвращает полученную строку.
Функция
ucfirst <выражение>
преобразует первый символ выражения в прописной и возвращает полученную строку.
Пример - pr_uc_lc.pl
print "Ф-ция uc() преобразует ",$s="upper case"," в ",uc $s; print "\nФ-ция ucfirst() преобразует ",$s="uPPER CASE"," в ",ucfirst $s; print "\nФ-ция lс() преобразует ", $s="LOWER CASE"," в ",lc $s; print "\nФ-ция lcfirst() преобразует ",$s="Lower case"," в ",lcfirst $s;
Ф-ция uc() преобразует upper case в UPPER CASE Ф-ция ucfirst() преобразует uPPER CASE в UPPER CASE Ф-ция lс() преобразует LOWER CASE в lower case Ф-ция lcfirst() преобразует Lower case в lower case
Расширенный синтаксис регулярных выражений
Существует класс конструкций общего вида (?...), добавляющих новые возможности для задания образцов за счет расширения синтаксиса регулярного выражения, а не за счет введения новых метасимволов или метапоследовательностей. Символ, следующий за символом "?", определяет функцию, выполняемую данной синтаксической конструкцией.
Конструкция (?:ОБРАЗЕЦ) в регулярном выражении позволяет использовать скобки только для группирования элементов без создания обратных ссылок.
rsrv4.pl
$_="Приехали приплыли например"; @s = m/(?:^|\s)([Пп]ри[а-я]+)/g; for ($i=0;$i<@s;$i++) { print "$i-$s[$i]\n"; }
0-Приехали 1-приплыли
Регулярное выражение с положительным постусловием
Конструкция (?=ОБРАЗЕЦ) в регулярном выражении задает условие, что следующий фрагмент текста должен удовлетворять ОБРАЗЦУ.
rsrv1.pl
$str = "bbbaaabbbcccddd"; $str =~ m/b+(?=c+)/; print "$`\n"; print "$&\n"; print "$'\n";
bbbaaa bbb cccddd
Регулярное выражение с отрицательным постусловием
Конструкция (?!ОБРАЗЕЦ) в регулярном выражении задает условие, что следующий фрагмент текста не должен удовлетворять ОБРАЗЦУ.
rsrv2.pl
$str = "aaabbbcccddd"; $str =~ m/b+(?!c+)/; print "$`\n"; print "$&\n"; print "$'\n";
aaa bb bcccddd
Регулярное выражение с положительным предусловием
Конструкция (?<=ОБРАЗЕЦ) в регулярном выражении задает условие, что предыдущий фрагмент текста должен удовлетворять ОБРАЗЦУ. Образец должен иметь фиксированную длину, т. е. не содержать множителей.
rsrv3.pl
$str = "aaabbbcccddd"; $str =~ m/c+(?<=b)/; print "$`\n"; print "$&\n"; print "$'\n";
aaabbb ccc ddd
Регулярное выражение с отрицательным предусловием
Конструкция (?<!ОБРАЗЕЦ) в регулярном выражении задает условие, что предыдущий фрагмент текста не должен удовлетворять ОБРАЗЦУ. Образец должен иметь фиксированную длину, т. е. не содержать множителей.
rsrv3.pl
$str = "aaabbbcccddd"; $str =~ m/c+(?<!b)/; print "$`\n"; print "$&\n"; print "$'\n";
aaabbb ccc ddd