- Що таке регулярні вирази.
- Область застосування.
- Різновиди регулярних виразів.
- Основні поняття.
- Основи синтаксису регулярних виразів.
Основи регулярних виразів, базовий синтаксис і використання, різновиди регулярних виразів в PHP.
Що таке регулярні вирази.
Регулярні вирази - це механізм для пошуку послідовностей символів в тексті зі своєю мовою опису (подання) цієї послідовності. Іншими словами регулярні вирази - це потужний інструмент для різноманітних маніпуляцій з текстом.
Непосвяченому рядок регулярних виразів може здатися абракадаброю, але, запевняю вас, доклавши трохи зусиль на освоєння, ви навчитеся їх розуміти і опануєте їх міццю. На 100% не обіцяю, тому що його можливості величезні, відсоток освоєння буде залежати від вашої наполегливості і терпіння.
І останнє передмову. Побудова шаблонів регулярних виразів настільки гнучко, що складно привести суворе опис його побудови, я, принаймні, таких не зустрічав. Тому будемо вчитися методом поступового занурення в ці самі регулярні вирази. У статті ви познайомитеся з основними термінами та основами синтаксису. У наступній наведено довідковий матеріал для побудови шаблонів регулярних виразів і конкретні приклади з коментарями, які допоможуть закріпити знання на практиці.
Область застосування.
В IT регулярні вирази використовуються в різних мовах програмування, скрипти і інтегрованих середовищах, текстових редакторах, компіляторах і утиліти для пошуку, аналізу та різного перетворення текстів.
Може виникнути питання, чому регулярні вирази краще звичайного пошуку? Цей інструмент дуже ефективний, як кажуть фахівці, в разі нечіткого пошуку, кажучи образно, коли треба знайти «то, не знаю, що». Спробуйте, наприклад, знайти в великому тексті всілякі варіанти простого слова «вода» - «водний», «водяний», «підводний» і т.п. За допомогою регулярних виразів ви з цим завданням легко впораєтеся.
Різновиди регулярних виразів.
Як всякий корисний інструмент, регулярні вирази обросли безліччю різних доповнень, діалектів і напрямків. Я зупинюся на їх використанні в серверних скриптах.
Існує два основні стандарти регулярних виразів - POSIX і PCRE.
POSIX (portable operating system interface for Unix) - в даний час вважається застарілим, але підтримується більшістю скриптів і мов програмування.
PCRE (Perl Compatible Regular Expressions) - даний стандарт перевершує попередній за своїми можливостями і швидкості роботи. Він вбудований в ядро Perl, звідки очевидно і почав переможний хід. Втім, в ядро PHP, він також вбудований.
Обидва варіанти багато в чому схожі. У більш просунутому, наприклад, додані спеціальні символи і параметри, що спрощують шаблон і роблять пошук більш гнучким. Інші діалекти в основному доповнюють стандарти додатковими можливостями, а й базові настільки широкі, що я сумніваюся, що ви будете їх використовувати на 100%. Іншими словами, сміливо освоюйте цей інструмент в будь-якому вигляді, відмінності незначні.
Основні поняття.
Основа регулярних виразів - це побудова пошукову послідовність (шаблону) за допомогою спеціальної мови, куди входять набори символів, метасимволов і різні параметри пошуку.
У найпростішому випадку в шаблоні вказують встановлено декілька або спеціальних символів, які потім шукаються в тексті на збіг. Коли потрібно знайти, наприклад, кілька варіантів набору символів, або прив'язати шаблон пошуку до початку або кінця слова додатково використовують спеціальні символи (метасимволи) і керуючі параметри. Все просто, складність лише в тому, щоб знати правила їх використання. Основні терміни і правила побудови шаблонів і будуть приведені в статті.
Ніхто не хоче вважатися консерватором, ваш покірний слуга в тому числі, тому в подальшому матеріалі будемо дотримуватися стандарту PCRE.
Отже, почнемо з базових понять.
Подшаблон - частина рядка пошуку, виділена дужками (), називається подшаблоном і використовується для виділення цієї групи з метою подальшої обробки.
Метасимволи - це спеціальні символи, які використовуються для позначення груп символів, невидимих символів, управління режимом пошуку, наприклад, «.», «^», «$», «*» І т.д.
Клас - в шаблоні регулярних виразів може зустрічатися група символів (або весь шаблон) в квадратних дужках - це клас. Він дозволяє знайти підрядок з будь-яким з символів, перерахованих в класі. Наприклад, за допомогою шаблону «л [еи] с» будуть знайдені слова «ліс» і «лисиць».
Квантіфікатор регулярного виразу визначає кількість повторень попереднього набору символів в шаблоні. Вказується в фігурних дужках після переліку символів. Може бути використаний для одиночного символу, символьного класу, метасимвола «.», Подшаблона і зворотного посилання. Для найбільш уживаних значень кількості повторень використовуються свої метасимволу.
Якір регулярного виразу - це спеціальний символ, який вказує, в якій частині тексту або рядки шукати подстроку шаблону. Наприклад, за шаблоном / ^ ab / можуть бути знайдені рядки, що починаються з поєднання «аб».
Основи синтаксису регулярних виразів.
При формуванні шаблону в регулярних виразах використовуються наступні угоди:
- шаблон пошуку завжди є рядком, відокремлювану спеціальним символом, загальноприйнято використовувати для цього зворотний слеш «\», наприклад, \ шаблон_поіска \;
- шаблоном може виступати звичайний символ або набір символів;
- після закриває шаблон зворотного слеша може бути вказаний необов'язковий список модифікаторів пошуку, наприклад, шаблон \ абракадабра \ / m дозволить знайти підрядок «абракадабра» у всіх рядках тексту;
- набір символів, укладений у квадратні дужки дозволяє знайти слова з будь-яким символом з набору, наприклад, за шаблоном [світ] буде знайдено світ, рим, світогляд і т.п. У дужках можна вказувати через дефіс діапазон символів, наприклад, [а-в];
- щоб використовувати метасимвол в якості звичайного символу шаблону його випереджають зворотним слешем, наприклад, щоб використовувати «.» в шаблоні, треба вказати [program \ .exe];
- якщо зворотний слеш в шаблоні ставиться перед звичайним символом, він перетворює його в метасимвол, наприклад, шаблон «\ d» визначає пошук будь-цифри;
- альтернативні послідовності розділяються символом '|', але всередині класу це буде звичайний символ. Наприклад, \ ліс | лисиць \ відповідає і «лисиць» і «ліс»;
- всередині регулярного виразу можна вказувати «подшаблони» укладаючи їх в круглі дужки. Поясню на прикладі. Шаблон «пар (Оход | ОВНС)» збігається з кожним із слів «паровоз», «пароплав» і «пар», а без подшаблона такого результату досягти складніше. Подшаблони для доступу до них нумеруються по мірі появи;
- прапори, вказуються в кінці шаблону, дають вказівки по виду пошуку, наприклад, ігнорувати регістр символу.
На цьому досить для початку знайомства з регулярними виразами. В наступній статті , Побудованої у вигляді довідника, будуть приведені дані, достатні для витонченого використання регулярних виразів.