Регулярні вирази. Метасимвол точка

21

Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених темі регулярних виразів і в цій статті ми познайомимося з одним з найбільш популярних метасимволів в регулярних виразах — це символ крапка. Почнемо?

Почнемо відразу з того, що ж означає символ крапки в регулярних виразах. В шаблоні регулярного виразу точка співпадає з будь-яким символом, крім переведення рядка (за замовчуванням). Якщо ми хочемо, щоб точка збігалася також і з символом переведення рядка, в PHP ми можемо використовувати модифікатор шаблону s.

Давайте одразу перейдемо до прикладів. Напишемо декілька довільних рядків тексту і використовуємо крапку в шаблоні.

Регулярні вирази. Метасимвол точка

Як бачимо, точка дійсно збігається з будь-яким символом: букви, цифри, пробіл, точка, кома і т. д. При цьому точка співпадає з одним символом, але завдяки модификатору g пошук не обмежується першим збігом і продовжується далі. У результаті знайдено 21 збіг (кількість збігів можна побачити в правому верхньому куті сервісу regexr.com).

Якщо ми додамо квантіфікатор + після крапки, то тим самим задамо пошук співпадаючих символів від одного до нескінченності.

Регулярні вирази. Метасимвол точка

Тепер знайдено 3 збіги за кількістю рядків). Оскільки точка не співпадає з символом переведення рядка, шаблон знайде збіг до кінця рядка.

А що, якщо ми хочемо знайти саме точку? Як бути в такому випадку? Тут є два варіанти. Перший — використання символу екранування, яким є зворотний слеш (\). Вказавши слеш перед метасимволом, ми тим самим экранируем метасимвол і він буде трактуватися, як звичайний символ, тобто в даному випадку, як просто точка.

Регулярні вирази. Метасимвол точка

Тепер знайдена тільки крапка. Інший варіант — поставити крапку в символьний клас, де вона розглядається як звичайний символ:

Регулярні вирази. Метасимвол точка

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

Регулярні вирази. Метасимвол точка

Все працює. Зверніть увагу, точка перед останньою частиною доменного імені екранована. Це зроблено для того, щоб вона сприймалася саме як точка. Якщо ж ми приберемо екрануючий слеш, тоді точка буде збігатися з будь-яким символом і наш шаблон пропустить некоректний email:

Регулярні вирази. Метасимвол точка

На цьому ми будемо завершувати сьогоднішню статтю. Більше про регулярних виразах ви можете дізнатися з нашого курсу з регулярними виразами. Удачі!