Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
reg.doc
Скачиваний:
1
Добавлен:
09.11.2019
Размер:
143.87 Кб
Скачать

Функция 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

13

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]