Захват групп и обратные ссылки
Захват групп: Группы позволяют извлекать определенные фрагменты текста:
ВыделитьPHP
preg_match('/(\d+) (\w+)/', '123 apples', $matches);
// $matches[1] => '123', $matches[2] => 'apples'Обратные ссылки: Обратные ссылки позволяют использовать захваченные группы в замене:
ВыделитьPHP
preg_replace('/(\w+) (\w+)/', '$2, $1', 'John Doe');
// Результат: 'Doe, John'Утверждения (Lookahead и Lookbehind)
Positive Lookahead: Проверяет, что после текущего положения есть определенный паттерн:
ВыделитьPHP
preg_match('/apple(?= pie)/', 'I love apple pie'); // Вернет trueNegative Lookahead: Проверяет, что после текущего положения нет определенного паттерна:
ВыделитьPHP
preg_match('/apple(?! pie)/', 'I love apple juice'); // Вернет truePositive Lookbehind: Проверяет, что перед текущим положением есть определенный паттерн:
ВыделитьPHP
preg_match('/(?<=love )apple/', 'I love apple'); // Вернет trueNegative Lookbehind: Проверяет, что перед текущим положением нет определенного паттерна:
ВыделитьPHP
preg_match('/(?<!love )apple/', 'I hate apple'); // Вернет trueРежимы и флаги
i (case-insensitive): Игнорирует регистр символов:
ВыделитьPHP
preg_match('/apple/i', 'APPLE'); // Вернет truem (multiline): Позволяет использовать ^ и $ для начала и конца каждой строки:
ВыделитьPHP
preg_match('/^apple/m', "banana\napple"); // Вернет trueU (ungreedy): Меняет жадные квантификаторы на ленивые:
ВыделитьPHP
preg_match('/.*?(apple)/U', 'I have an apple'); // Вернет 'apple'Модификаторы Unicode
u (UTF-8 mode): Включает поддержку UTF-8 символов:
ВыделитьPHP
preg_match('/привет/u', 'Привет, мир!'); // Вернет trueПоддержка символьных классов
POSIX Character Classes: Поддержка POSIX-классов символов:
ВыделитьPHP
preg_match('/[:digit:]+\./', 'The answer is 42.'); // Вернет trueУдаление комментариев и пустых строк
Использование регулярных выражений для удаления комментариев и пустых строк из кода:
ВыделитьPHP
$clean_code = preg_replace('/\/\*(.*?)\*\//s', '', $code);HTML/CSS очистка
Использование регулярных выражений для удаления опасных тегов и стилей:
ВыделитьPHP
$safe_html = preg_replace('/<\/?[^>]+>/si', '', $html);Паттерны для URL и Email
Паттерны для валидаторов URL и email:
ВыделитьPHP
preg_match('/^[^\s@]+@[^\s@]+\.[^\s@]+$/', 'email@example.com'); // Вернет trueЭти расширенные возможности помогут вам эффективнее использовать регулярные выражения в PHP и решать более сложные задачи.