Контакты

Для связи с нами можно использовать:
irc://irc.chatnet.ru:#gfs
icq://546460
email://cobalt[@]gfs-team.ru

Все материалы предоставлены только с ознакомительной целью
ГлавнаяСтатьиКодингPerl. Регулярные выражения
© Cobalt 01.06.2006 статья не оптимизирована

Регулярные выражения представляют собой поистине одну из сильнейших сторон Perl.
Подобные функции других языков значительно уступают ему в этом. Не даром эти
функции называют Perl-совместимыми. Регулярные выражения значительно облегчают
жизнь разработчику. Они позволяют проводить поиск и замену в текстовых строках
очень легко.

Формат регулярного выражения представляет собой следущую конструкцию:

/word/mod

word в данном случае маска выражения. т.е. сочетание искомых символов.
mod - необязательный модификатор который уточняет выражение.

Маска может состоять не только из букв и цифр, но и из спецсимволов, расширя-
ющих маску. Примеры таких символов с пояснением их значения:

x? ноль или один символ 'x'
x* ноль или больше символов 'x'
x+ один или больше символов 'x'
.* ноль или больше любых символов
.+ один или больше любых символов
{m} M символов
[] символы, заключенные в []
[^] символы, кроме заключенных в []
[0-9] любая цифра от '0' до '9'
[a-z] любая буква от 'a' до 'z'
[^0-9] любой символ, не находящийся между '0' и '9'
[^a-z] любой символ, не находящийся между 'a' и 'z'
/^.../ первый символ в строке
/...$/ последний символ в строке
\d одна цифра, то же, что и [0-9]
\d+ одна или больше цифр, то же, что и [0-9]+
\D одна не-цифра, то же, что и [0-9]
\D+ одна или больше не-цифр, то же, что и [0-9]+
\w один alphanumeric символ (латинская буква или цифра), то же, что и [a-zA-Z0-9]
\w+ один или больше alphanumeric-символов, то же, что и [a-zA-Z0-9]+
\W один не-alphanumeric символ, то же что и [^a-zA-Z0-9]
\W+ один или больше не-alphanumeric символ, то же что и [^a-zA-Z0-9]+
\s один space символ (пробел, табуляция, новая строка), то же что и [\n\t\r\f]
\s+ один или больше space символов, то же что и [\n\t\r\f]
\S один не-space символ, то же что и [^\n\t\r\f]
\S+ один или больше не-space символов, то же что и [^\n\t\r\f]+
a|b|c 'a' или 'b' или 'c'
abc подстрока "abc"
(http|ftp) либо то либо другое

Чтобы въехать в эту систему необходимо привести несколько примеров:

$text='test';
$text=~/te/ - истина т.к. 'test' содержит 'te'
$text=~/^t/ - истина т.к. начинается с 't'
$text=~/t$/ - истина т.к. оканчивается на 't'
$text=~/[^a-c]/ - тоже истина т.к. 'test' не содержит символов с 'a' по 'c'

Модификатор может быть таким:

/i - неразличать маленькие и большие буквы
/m - считать строку многострочной
/s - однострочная строка
/x - расширенный синтаксис ( использование пробелов и комментариев)

Пример - /test/i - будет итсиной как для 'test', так для 'Test', и для 'tEsT'.

Применять регулярные выражения можно тремя способами. Первый, как вы наверно
уже догадались это обычная проверка:

if($test!~/^t/i) - если $test не содержит 't' или 'T' в первом символе

Либо используя опцию m/ (она полностью аналогична синтаксису без опций):

if($test=~m/t$/i) - если $test содержит 't' или 'T' в последнем символе

Второй способ - замена. Для этого надо использовать опцию tr/ :

tr/test/tset/i - заменяет совподающее слово из маски на равное из строки
замены.

И наконец третий способ - подстановка (опция s/) Вотличии от tr/ с s/ совсем
не обязательно чтобы строки совпадали:

s/test/no/i - меняет 'test' на 'no'




© Cobalt 01.06.2006 статья не оптимизирована

e-Commerce Partners Network
Gu3573r написал:

Статья нормальная, но хотелось бы чтобы эта тема затрагивалась более глубже. Допустим на практике использование $1,$2 и т.д. сильно облегачают работу.
P.S. Если статья расчитана именно для начинающих perl кодеров, то думаю подойдет.

Ник:

Текст:
P Br B I Qute



Код: обновить
Последние комментарии
17.08.2017 17:38:27 DanielBIOLA написал:
Ламинин Lamnine LPGN в Україні, в Украине, Украина Ckaйп evg7773 15-23-28...
Взлом домофонов
17.08.2017 00:22:06 Avia777dymn написал:
<b>Авиабилеты по РУ за 60 процентов от цены кассы.</b> по МИРУ...
Сайт снова работает!
16.08.2017 11:13:50 Avia777dymn написал:
<b>Авиабилеты по РУ за 60 процентов от цены кассы.</b> по МИРУ...
Предупреждение
Реклама

Тут должна была быть ваша реклама, но мы потеряли глиняную табличку с ее текстом. SapeId: 665044

Rambler's Top100