Знакомства на Just click it
Скоро новый год!
Онлайн радио
Вверх
Новые статьи

Ретро газета в подарок
Архив

Условные подвыражения в PHP

В регулярных выражениях существуют условные выражения, применимые к подшаблонам.

То есть можно заставить процессор РВ выбирать подшаблон в зависимости от условия или выбирать между двумя альтернативными шаблонами в зависимости от результата утверждения или от того, совпал ли предыдущий захваченный подшаблон.

Условные подвыражения

 

Существуют две основные формы записи условных подвыражений:

  • (?(условие)шаблон_выполняемый_если_ условие_верно)
  • (?(условие)шаблон_если_условие_верно |шаблон_если_условие_неверно)

 

Существует два типа условий. Если текст между круглыми скобками состоит из последовательности цифр, то условие удовлетворяется, если захваченное подвыражение с этим номером ранее совпало.

 

( \( )? [^()]+ (?(1) \) )

 

Первая часть этого РВ опционально совпадает с открывающейся круглой скобкой, и если этот символ присутствует, то устанавливает его как первое захваченное подвыражение.

 

Вторая часть совпадает с одним или более символами, не заключенными в круглые скобки.

 

Третья часть РВ – это условное подвыражение, которое проверяет, совпало ли первое множество скобок или нет (попалась ли нам в строке открывающая круглая скобка).

Если попалась, то есть объект (строка) начинается с символа «(», то условие верно и вычисляется условный шаблон, а именно требуется наличие закрывающей круглой скобки. В противном случае подшаблон ни с чем не совпадает.

Если условие не последовательность цифр, то оно должно быть утверждением. Это может быть позитивное или негативное «смотрящее вперед» или «смотрящее назад» утверждение.

 

(?(?=[^a – z]*[a – z])\d{2} – [a – z]{3} – \d{2} |\d{2} – \d{2} – \d{2})

 

Условие здесь – позитивное «смотрящее вперед» утверждение. Оно совпадает с любой последовательностью не букв, после которых идет буква. Другими словами, оно проверяет присутствие хотя бы одной буквы в строке для поиска. Если буква найдена, то производится сравнение по первому альтернативному варианту шаблона (\d{2} – [a – z]{3} – \d{2}), иначе – по второму (\d{2} – \d{2} – \d{2}). Этому шаблону удовлетворяют строки двух типов: dd – aaa – dd или dd – dd – dd, где d – любая цифра, a – любая буква.

 

назад
далее
Наверх
Источник: Создание сайтов
Мы В Контакте Мы на Facebook Лента новостей RSS
Копирование и публикация материалов сайта разрешены только при наличии активной ссылки на источник
2011 - наши дни.. © Контакты | Лого | Реклама на сайте | Вебмастерам