22. Кто-нибудь может мне по-русски рассказать о операорах: ?:, ?!, ?= и т.д.и когда они используются?
(?:pattern) - это почти (pattern). В норме круглые скобки выполняют
одновременно две функции - группируют то, что у них внутри, чтобы можно было
использовать повторители (*, ?, +), и сохраняют то, что там получилось, в
переменных $1, $2,.. (?:pattern) выполняет только первую функцию, не
трогая, таким образом, значения переменных $1, $2,... Что несколько ускоряет
работу (пропорционально количеству откатов, проходящих через границу
выбранной группы) и уменьшает количество переменных.
(?=pattern) - загляд вперед. Отличается от просто pattern тем, что после
успешного нахождения соответствия позиция в строке будет не после
соответствующего куска, а перед ним.
(?!pattern) - отрицательный загляд вперед. Отличается от предыдущего тем, что
pattern найтись HЕ должен.
Вторые оба наиболее осмысленны, когда привязаны к чему-нибудь (^, \G, просто
предшествующему шаблону). Hо в некоторых ситуациях осмысленны и сами по себе.
В perl 5.005 появились различные нововведения, о которых подробнее можно
узнать в документации: ?<=, ?,
?(condition)yes-pattern|no-pattern
<<- Как не учитывать регистр в русском тексте? С английским регекспы с ключом i работают, а с русским - нет.
->> Как работать из perl с базами данных?
Русский PERL programming FAQ. Часто задаваемые вопросы по программированию на perl [К списку статей] [К оглавлению]
|
 |