Регулярні вирази в PHP. Символ заперечення

320

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

Почнемо з того, в яких випадках нам може знадобитися символ заперечення. Класичний варіант, коли ми відкрили якийсь парний символ, наприклад лапки, і всередині лапок нам підходять будь-які символи, крім, власне, лапок. Ось тут нам і знадобиться символ заперечення.

Як же позначається цей символ в регулярних виразах? Насправді він уже знайомий. Це циркумфлекс, який по простому часто називають кришкою або будиночком. Записується він так — ^. Почекайте, скажете ви, адже цей символ позначає початок рядка в регулярках. Все вірно. Але цей символ також є і символом заперечення.

Як трактувати цей метасимвол — залежить від його позиції в регулярному виразі. Якщо він стоїть першим в регулярці, тобто йде відразу після обмежувача шаблону, тоді це метасимвол початку рядка. Якщо ж він використовується на самому початку символьного класу — [^…] — у цьому випадку він інтерпретується як символ заперечення і повідомляє, що всі символи, що йдуть після нього, не повинні зустрічатися в збігається позиції рядка. У всіх інших випадках цей символ збігається сам з собою, тобто не є метасимволом.

Ну і давайте вирішимо завдання, озвучену вище, — знайдемо всі посилання в тексті:

$pattern = ‘#.+?#’;

Ось таке от не складне рішення у нас вийшло, як бачите, воно працює:

Регулярні вирази в PHP. Символ заперечення

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