Регулярные выражения

ОБРАТИТЕ ВНИМАНИЕ
Символ @ является специальным. По этой причине перед ним необходимо ука¬зать защитный слэш.
Рассмотрим еще один пример. Предположим, необходимо получить все зна¬чения между одинаковыми тегами:
$pattern = qr/<Sl>(.*)<\/Sl>/;
$str = ,,<Sl>3Ha4eHnel</Sl><B>JInuiHee значение</в><31>3начение2</31>";
@Mass = $str =- /$pattern/g; for ($i=0; $i<@Mass; $i++) { print $Mass[$i], "<BR>";
}
Вместо желаемого результата мы получим:
Значение 1 </S1 ><В>Лишнее значение</BXS1 >3начение2
Такое поведение квантификаторов называется ’’жадностью”. Чтобы ограни- . чить эту ’’жадность”, необходимо после символа * указать символ ?:
$pattern = qr/<Sl>(.*?)<\/Sl>/;
$str = "<31>3начение1</31хв>лишнее значение</вх31>3начение2</31>";
0Mass = $str =~ /$pattern/g; #
for ($i=0; $i<@Mass; $i++) { print $Mass[$i], "<BR>";
}
В этом случае мы получим только все значения между нужными тегами:
Значение1 Значение2
С помощью символа ? можно ограничить ’’жадность” и других квантифика¬торов.
Логическое ИЛИ рассмотрим на примере выражения n|m(соответствует од¬ному из символов п или т):
красн(ая) | (ое) — красная ИЛИ красное, НО не красный.



Страница: 1 | 2 | 3 | 4 | 5


Web сайты на Perl и MySql