В мові RegEx кожен вираз складається з одної або більше керівних команд. Деякі з них можна групувати (як групуються інструкції в програмі за допомогою операторних дужок), тоді вони вважаються однією командою.
Всі керівні команди поділяються на три класи:
- прості символи, а також спеціальні символи, що заміняють їх
- керівні конструкції (квантифікатори повторів, оператор альтернативи, групувальні дужки тощо)
- так звані уявні символи – в рядку їх немає, однак вони позначають яку-небудь частину рядка. наприклад, його кінець)
Прості символи
Клас простих символів, справді, найпростіший. А саме, будь-який символ в рядку на RegEx позначає сам себе, якщо не належить до спеціальних символів.
До спеціальних символів належать такі:
. * ? + [ ] { } | $ ^
Наприклад, регулярний вираз “abcd” буде вибирати рядки, в яких зустрічається послідовність символів “abcd”.
Скасування дії спецсимволів
Якщо потрібно вставити у вираз один із спеціальних символів, але так, щоб він не позначав своєї спеціальної дії, поставте перед ним зворотній слеш. Наприклад, якщо ми шукаємо рядок, який містить фрагмент “a*b”, то маємо записати регулярний вираз “a\*b”.
Але в PHP цей вираз потрібно записати як “a\\*b”.
Групи символів
Звичайно ж, RegEx дозволяє задавати не лише безпосередні частини шуканих рядків, як показано вище. Існують деякі спецсимволи, що позначають відразу групу простих символів. Ця можливість – один із наріжних каменів, основ регулярних виразів.
Найважливіший з таких знаків – крапка “.” – вона позначає будь-який один символ. Наприклад, вираз “a.b” відповідає рядкам “azb” або “aqb“, але не відповідає рядкам “aqwb” чи “ab“. Пізніше ми розглянемо, як заставити крапку позначати, скажімо, рівно 5 будь-яких символів.
Може бути, що потрібно знайти не будь-який символ, а один з кількох конкретних. Для цього ті конкретні символи потрібно взяти у квадратні дужки. Наприклад, вираз “a[xXyY]c” відповідає рядкам, в яких є фрагменти по 3 символи, які (фрагменти) починаються з букви a, далі містять одну з таких букв: x,X,y,Y, і закінчуються буквою c. Якщо потрібно вставити поміж квадратних дужок сам символ [ чи ], то треба поставити перед ним зворотний слеш (в PHP – два слеші), щоб скасувати його спеціальну дію.
Якщо букв-альтернатив багато, і вони йдуть підряд, то не обов’язково перераховувати в квадратних дужках їх всі – можна вказати першу, поставити дефіс і вказати останню. Такі групи можуть повторюватися. Наприклад, вираз “[a-z]” визначає будь-яку букву від a до z включно, а вираз “[a-zA-Z0-9_]” визначає будь-який алфавітно-цифровий символ.
Існує ще інший, іноді зручніший спосіб задавання великих груп символів. В мові RegEx в квадратних дужках можуть вказуватися не лише одиничні символи, але й спеціальні вирази. Ось їх повний список:
- [:alpha:] – буква;
- [:digit:] – цифра;
- [:alnum:] – буква або цифра;
- [:space:] – пропуск;
- [:blank:] – пропуск або символи з кодами 0 і 255;
- [:cntrl:] – спеціальний символ;
- [:graph:] – символ псевдографіки
(Стаття не завершена.
Краще використовувати мову регулярних виразів PCRE, а не RegEx)