Структура регулярних виразів POSIX чимось нагадує структуру типових математичних виразів - різні елементи (оператори) об'єднуються один з одним і утворюють більш складні вирази. Однак саме сенс об'єднання елементів робить регулярні вирази таким потужним і виразним засобом. Можливості не обмежуються пошуком літерального тексту (наприклад, конкретного слова або числа); ви можете провести пошук рядків з різною семантикою, але схожим синтаксисом - наприклад, всіх тегів HTML у файлі.
Найпростіше регулярний вираз збігається з одним літерально символом - наприклад, вираз g збігається в таких рядках, як g, haggle і bag. Вираз, отримане при об'єднанні кількох літеральних символів, збігається з тими ж правилами - наприклад, послідовність gan збігається в будь-якому рядку, що містить ці символи (наприклад, gang, organize або Reagan).
Оператор | (вертикальна риса) перевіряє збіг однієї з кількох альтернатив. Наприклад, регулярний вираз php | zend перевіряє рядок на наявність php або zend.
Квадратні дужки
Квадратні дужки ([]) мають особливий сенс в контексті регулярних виразів - вони означають «будь-який символ з перерахованих в дужках». На відміну від регулярного виразу php, яке збігається в усіх рядках, що містять літеральний текст php, вираз [php] збігається в будь-якому рядку, що містить символи р або h. Квадратні дужки грають важливу роль при роботі з регулярними виразами, оскільки в процесі пошуку часто виникає завдання пошуку символів з заданого інтервалу. Нижче перераховані деякі часто використовувані інтервали:
- [0-9] - збігається з будь-якою десяткової цифрою від 0 до 9;
- [A-z] - збігається з будь-яким символом нижнього регістра від а до z;
- [A-Z] - збігається з будь-яким символом верхнього регістру від А до Z;
- [A -Z] - збігається з будь-яким символом нижнього або верхнього регістру від а до Z.
Звичайно, перераховані вище інтервали всього лише демонструють загальний принцип. Наприклад, ви можете скористатися інтервалом [0-3] для позначення будь-якої десяткової цифри від 0 до 3 або інтервалом [b-v] для позначення будь-якого символу нижнього регістра від b до v. Коротше кажучи, інтервали визначаються абсолютно довільно.
квантіфікатори
Існує особливий клас службових символів, що позначають кількість повторень окремого символу або конструкції, укладеної в квадратні дужки. Ці службові символи (+, * і) називаються квантіфікаторамі. Принцип їх дії найпростіше пояснити на прикладах:
- р + означає один або кілька символів р, що стоять підряд;
- р * означає нуль і більше символів р, що стоять підряд;
- р? означає нуль або один символ р;
- р означає два символу р, що стоять підряд;
- р означає від двох до трьох символів р, що стоять підряд;
- р означає два і більше символів р, що стоять підряд.
Інші службові символи
Службові символи $ і ^ збігаються не з символами, а з певними позиціями в рядку. Наприклад, вираз р $ означає рядок, яка завершується символом р, а вираз ^ р - рядок, що починається з символу р.
- Конструкція [^ a-zA-Z] збігається з будь-яким символом, що не входять в вказані інтервали (a-z і A-Z).
- Службовий символ. (Точка) означає «будь-який символ». Наприклад, вираз р.р збігається з символом р, за яким слід довільний символ, після чого знову слід символ р.
Об'єднання службових символів призводить до появи більш складних виразів. Розглянемо кілька прикладів:
- ^. $ - будь-який рядок, що містить рівно два символу;
- (. *) - довільна послідовність символів, укладена між <Ь> і Ь>(Ймовірно, тегами HTML для виведення жирного тексту);
- p (hp) * - символ р, за яким слід нуль і більше примірників послідовності hp (наприклад, phphphp).
Іноді потрібно знайти службові символи в рядках замість того, щоб використовувати їх в описаному спеціальному контексті. Для цього службові символи екрануються зворотною косою межею (\). Наприклад, для пошуку грошової суми в доларах можна скористатися виразом \ $ [0-9] +, тобто «знак долара, за яким слідує одна або кілька десяткових цифр». Зверніть увагу на зворотну косу риску перед $. Можливими збігами для цього регулярного виразу є $ 42, $ 560 і $ 3.
Стандартні інтервальні вирази (символьні класи)
Для зручності програмування в стандарті POSIX були визначені деякі стандартні інтервальні вирази, також звані символьними класами (character classes). Символьний клас визначає один символ з заданого інтервалу - наприклад, букву алфавіту або цифру:
- [[: Alpha:]] - алфавітний символ (aA-zZ);
- [[: Digit:]] - цифра (0-9);
- [[: Alnum:]] - алфавітний символ (aA-zZ) або цифра (0-9);
- [[: Space:]] - пропуски (символи нового рядка, табуляції і т.д.).
Якщо Ви не знайшли що шукали, то рекомендую скористатися пошуком по сайту: