Продовжуємо вивчати регулярні вирази. І в цю статтю ми поговоримо про роль круглих дужок. Дізнаємося навіщо вони потрібні і як їх використовувати.
Що стосується інших видів дужок, то, зі статті Вивчаємо регулярні вирази самостійно - діапазони (частина 4). ми вже знаємо, що в квадратних дужках. пишеться діапазон, який може складатися з групи різних символів або з інтервалів. І цього діапазону може відповідати якийсь символ з рядка, якщо цей символ присутній у вибраної групи символів або входить в один із зазначених інтервалів.
А фігурні дужки використовуються для вказівки конкретного кількості повторень, від і до. З ними ми познайомилися в статті Вивчаємо регулярні вирази самостійно - квантіфікатори повторень (частина 3).
Круглі дужки мають роль групування. Їх ще називають групуються дужками. і використовуються вони в двох випадках.
Повторення групи символів
Перший випадок застосування круглих дужок. це коли потрібно згрупувати для зручного повторення, якусь частину символів з регулярного виразу.
Наприклад, спочатку наш регулярний вираз виглядає таким чином:
Використовуючи круглі дужки і одного з квантіфікаторов повторень, ми скорочуємо довжину нашого регулярного виразу, до такого виду:
Тепер наше регулярний вираз стало коротше, наочніше і виглядає вона вже по-людськи.
Це у нас був перший випадок застосування круглих дужок.
Зручна обробка даних
Другий випадок використання круглих дужок. це коли необхідно написати регулярний вираз таким чином, щоб потім було зручно працювати з знайденими відповідниками, в заданому рядку.
Для кращого розуміння даного випадку, наведу приклад на мові PHP.
Для початку, поекспериментуємо з регулярним виразом без круглих дужок.
Функція preg_match (), повертає true (при виведенні відображається 1), якщо отриманий рядок відповідає зазначеному регулярному виразу і false (при виведенні відображається порожній рядок, тобто нічого), в іншому випадку.
Детальну інформацію про цю функцію Ви можете почитати в довіднику.
І так, запускаємо цей скрипт в браузері, і бачимо, що результат перевірки дорівнює true.
Тепер, в іншу зміну, запишемо це ж регулярний вираз, тільки вже з застосуванням круглих дужок.
Також перевіряємо отриману рядок на відповідність.
Оновлюємо сторінку в браузері, і бачимо, що, результат перевірки також дорівнює true.
Але, сенс застосування круглих дужок видно в іншому випадку. А саме коли ми додаємо знайдені відповідності в масив.
Справа в тому, що працювати з масивом набагато легше ніж з цілою рядком.
Для додавання знайдених відповідностей в масив, використовується функція preg_match_all ( 'регулярное_вираженіе'. 'Строка_для_проверкі'. $ Массів_соответствій).
Детальну інформацію про цю функцію Ви можете почитати в довіднику.
В результаті роботи цієї функції, ми отримуємо масив, який містить відповідності, знайдені в заданому рядку.
І так як регулярний вираз не містить группирующих дужок, то в масиві $ matches, потрапляє лише один збіг. А саме цілий рядок, яка вказана в другому параметрі, функції preg_match_all ().
Запускаємо скрипт в браузері і бачимо, що вміст масиву $ matches виглядає таким чином:
Вийшов двомірний масив, що складається з одного масиву, який має тільки один елемент.
Але, ми знаємо, що рядок може відповідати регулярному виразу не тільки цілком, але і частково. Тобто, цифри 373 це перше відповідність, цифри 69 це друге відповідність, 813 - третя відповідність і 501 - четвертий відповідність.
Так ось, ми використовуємо круглі дужки. саме для того щоб в масиві додавалися всі ці відповідності.
Тепер беремо регулярний вираз вже з дужками (вона у нас знаходиться в змінній $ reg1) і додаємо її в перший параметр функції preg_match_all ().
У другому параметрі також передаємо нашу рядок і в третьому вказуємо назву масиву, в якому будуть додаватися всі знайдені збіги.
Відкриваємо сторінку в браузері, і бачимо, що вміст масиву збігу виглядає вже по-іншому:
Також вийшов двомірний масив, але вже з усіма знайденими відповідниками в зазначеному рядку.
Змінюємо регулярний вираз:
Оновлюємо сторінку і бачимо, що вміст масиву змінилося:
Ну і на цьому все. Сподіваюся Ви зрозуміли для чого використовуються круглі дужки в регулярні вирази. Тепер Ви можете застосувати отримані знання на практиці.
- Для чого використовуються квадратні дужки? Напишіть приклад.
- Для чого використовуються фігурні дужки? Напишіть приклад.
- В яких випадках використовуються круглі дужки? Напишіть за прикладом для кожного випадку.