Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Только не "?*", а "*?" 16.12.04 15:44 Число просмотров: 2685
Автор: Heller <Heller> Статус: Elderman
|
Попробую дать более развёрнутый ответ, что бы понятнее было.
Квантификаторы (конструкции, которые указывают на то, что элемент повторяется несколько раз) бывают следующие:
* - ноль или несколько совпадений
+ - одно или несколько совпадений
, - ноль или одно совпадение
{n} - точно n совпадений
{m,n} - от n до m совпадений
В последнем случае m или n можно не писать и тогда смысл изменится на "максимум n" или "по крайней мере m" соответственно.
Поиск начинается с начала строки и идёт в сторону конца. При этом, если используются квантификаторы, Perl ищет максимально длинный из всех возможных вариант. Пример:
$text="abcabcabc";
$text=~s/.+a//;
Точка означает совпадение с любым символом, кроме \n (если не указан модификатор s).
В результате в переменной $text окажется строка "bc". Это свойство квантификаторов называется "жадностью". Что бы ограничить жадность квантификатора, после него необходимо поставить знак вопроса:
$text="abcabcabc";
$text=~s/.+?a//;
Вот теперь в $text будет "bcabc". Думаю, из этих примеров всё понятно.
|
|
|