Синтаксис регулярних виразів (posix)

Структура регулярних виразів 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:]] - пропуски (символи нового рядка, табуляції і т.д.).

Якщо Ви не знайшли що шукали, то рекомендую скористатися пошуком по сайту:

Схожі статті