Вопрос такой: Что означает первый знак ? слева в скобках
\.(?i:gif|jpe?g|png)$
Ответ
Всё, что Вы прочтете ниже- плод моих фантазий, этого нет в учебниках и книгах. Это- моя попытка простыми словами объяснить смысл (? в регулярных выражениях.
Представьте, что Вы пишите язык регулярных выражений с нуля, так проще всего будет понять, что обозначает (? в регулярных выражениях.
Для начала:
Некое выражение, заключенное в скобки называется в регулярных выражениях группой
(это группа)
Итак, мы создаем язык регулярных выражений с нуля и мы не хотим перегружать язык множеством мета-символов и при этом нам ещё надо описать языком кучу возможностей:
атомарную группировку
именованные группы
группы без сохранения
рекурсии
изменение флагов внутри регулярного выражения
и много-много других
А что бы мы сделали, если бы писали новый императивный язык? Мы бы написали кучу стандартных функций:
function atomic( expression ) { [native code] }
function isNamedGroup( expression ) { [native code] }
function groupWithoutCapture( expression ) { [native code] }
и так далее
Грубо говоря
(? обозначает, что к группе необходимо применить некую функцию языка регулярных выражений.
А с таким пониманием всё становится очень просто:
(?> ... ) - атомарная группировка
(?P
Всё это объединяет одно- конструкция начинается с (?, применяется до закрывающей ) и каким-либо образом добавляет функционал для обработки текста.
Комментариев нет:
Отправить комментарий