Регулярные выражения какие символы экранировать - спец символы - php: * \ + $ . [] {} | ?
Primary tabs
- \ - символ экранирования.
Пример:'/qwe\/rty/'
- соответствует строке, в которой есть qwe/try. Символ / мы заэкранировали, после чего он перестал выполнять в данном месте свое специальное значение (он являлся ограничителем шаблона).
- ^ - символ начала данных.
- $ - символ конца данных.
Пример:'/^pattern$/'
- Соответствует строке, точно совпадающей с словом pattern. Т.е. с буквы p строка начинается и после n заканчивается.
- . - любой символ, кроме перевода строки. Но естьмодификатор, при использовании которого перевод строки тоже относится к "любым" символам.
Пример:'/pat.ern/'
- Соответствует и строке, содержащей pattern, или patdern, или pat3ern...
- [] - внутри этих скобок перечисляются символы, любой один символ из которых может стоять на данном месте. Это называется символьным классом. Спецсимволы, написанные в [] ведут себя немного по-другому. Это я напишу.
Пример:'/pat[aoe]rn/'
- под соответствие попадут только строки, содержащие patarn, patorn или patern.
- | - Или. Пример ниже.
- () - подмаска.
- ? - одно или ноль вхождений предшествующего символа или подмаски.
- * - любое количество вхождений предшествующего символа или подмаски. В том числе и ноль.
- + - одно или более вхождений.
Пример:'/as+(es|du)?.*r/'
- Буква а, потом одна или больше букв s, после этого сочетание es или du может быть один раз, а может м ни разу, потом любое количество любых символов и буква r.
Здесь же скажу про еще одно значения символа ?. Метасимвол звездочка по умолчанию жадный (и другие тоже). Это значит, что в нашем примере вот этой части '.*r' будет соответствовать, например, подстрока
asdrfsrsfdr
Как видно, кроме встретившейся первой r (тогда ответом было бы "asdr") в нее попало еще две. Вот эту жадность можно выключить. Т.е. шаблон станет соответствовать только подстроке asdr. До первого r. Для этого надо до того места где необходимо отключить жадность поставить модификатор (?U). Вот еще одно применение символам ? и ().
- {a,b} - количество вхождений предшествующего символа или подмаски от а до б. Если б не указан, считается, что верхней границы нет. Например, * - то же самое, что {0,}. ? - то же, что {0,1}. {5,7} - 5,6 или 7 повторений.
Из материалов: http://www.php.su/lessons/?lesson_17
- vedro-compota's blog
- Log in to post comments
- 6617 reads
Comments
melisa
Tue, 07/04/2017 - 13:35
Permalink
Уточните про ленивый квантификатор
Вопрос аналогичен этому
Не надо ли ставить "?" после квантификатора повторений, а не
?
Что в предпоследнем абзаце обозначает "U"? Просто букву?
vedro-compota
Fri, 09/22/2017 - 14:33
Permalink
как выключить жадность и что такое U
-- Допустим и тот и другой вариант -- оба они рассмотрены тут.
-- это спец. символ модификатора, в данном случае подразумевается синтаксис установки внутренних опций.
_____________
матфак вгу и остальная классика =)