Розгрібаємо «кашу»: PHP регулярні вирази дужки і метасимволи

318

Від автора: продовжуємо розпочатий екскурс в символічний «складову», що вивчається. Сьогодні ми дізнаємося, для чого використовуються в PHP регулярні вирази дужки.

Не звичайні, а метасимволи!

Нам знову не пощастило, тому що в дужки регулярках теж є метасимволи, та їх застосування вимагає уваги і знання особливостей їх використання. Щоб швидше розумілося, почнемо з прикладу.

Припустимо, що потрібно знайти в тексті підрядок, що складається з конкретного поєднання цифр, укладених в овальні дужки. Намагаємося:

Розгрібаємо «кашу»: PHP регулярні вирази дужки і метасимволи

Начебто все правильно працює! Але тільки на перший погляд. Трохи змінимо зміст рядка: текст 1234

Розгрібаємо «кашу»: PHP регулярні вирази дужки і метасимволи

І знову код видає повідомлення про те, що підрядок знайдено. Хоча нас цікавить підрядок (123). Що ж не так з вашою регуляркой? Дивимося на неї: /(123)/

Згадуємо, що і фігурні, і овальні дужки розцінюються PHP як метасимволи. Тому їх потрібно екранувати. Чого ми не зробили. Цей патерн задає для пошуку групу символів, що складається з цифр, тому що використовувані тут метасимволи («()») призначені для групування символів для пошуку.

Правильне регулярний вираз з екранованими дужками: /\(123\)/

Розгрібаємо «кашу»: PHP регулярні вирази дужки і метасимволи

Інші

Тепер поговоримо про інших дужках – квадратних («[ ]»). У шаблонах регулярок вони інтерпретуються ядром PHP як метасимвол. Значення, вказані всередині них, задають підмножина (діапазон) для пошуку. Якщо їх використовувати в попередньому прикладі, то регулярний патерн буде виглядати наступним чином: /[1-3]/

Також такі дужки застосовуються у мові для ініціалізації масиву. Спрощений синтаксис підтримує версією PHP 5.4 і вище.

Фігурні дужки в регулярках задають число повторень шуканого значення. У наступному прикладі в дужках шаблону вказується, що символ a повинен повторюватися три і більше разів.

Розгрібаємо «кашу»: PHP регулярні вирази дужки і метасимволи

Також «фігуристи» дужки використовуються для «дописування» значень змінних наступним чином:

“;
?>

Розгрібаємо «кашу»: PHP регулярні вирази дужки і метасимволи

І взагалі раджу бути уважнішими при використанні різних спецсимволов. Навіть в рамках однієї програмної платформи або CMS вони можуть інтерпретуватися по-різному. Що часто є причиною різних «специфічних» багів. Наприклад, як проблема з index route account register в OpenCart. Але це вже інша історія Розгрібаємо «кашу»: PHP регулярні вирази дужки і метасимволи .