Учебник по основам PHP. PHPBeginner


         

в тексте номер, состоящий из


Повторения и числители
Предположим, вы хотите найти в тексте номер, состоящий из 3-5 десятичных цифр, тогда в шаблоне необходимо указать \d{3,5}. Как вы можете догадаться, повторения символа (или, возможно, подшаб-лона) обозначаются указанием после него чисел в фигурных скобках, где первое число — минимально допустимое повторение символа (подшаблона), а после запятой — максимальное. Числители могут представляться также в следующем виде:
  • {n} — повторение, указанное n число раз;

  • {n,} — повторение, не меньше чем n раз.

  • Пропуск числителя до запятой не допускается. Первый числитель должен быть меньше второго. Вместо распространенных числителей можно также указывать их заменители:

    Заменитель числителя Значение Эквивалент
    у « 1 или 0 раз» {0,1}
    * «0 или более раз» {0,}
    + «1 или более раз» 1.}

    Будьте осторожны с неопределенными числителями, чтобы не спровоцировать бесконечный цикл.
    При конструировании шаблонов с диапазонными повторениями необходимо учитывать такой фактор, как жадность числителей, то есть такой случай, когда шаблону может соответствовать как меньшее, так и большее число повторений. Положим, у нас имеется текст:
    <Р> Текст <Р> абзаца</Р> со вложениями </Р>
    Тогда шаблон /<p>(.*)<\/p>/i может (теоретически) вернуть 4 варианта совпадения. По умолчанию ищется максимальное повторение (то есть в данном варианте — строка целиком). Чтобы находилось минимально повторяющееся значение, используйте модификатор U. Для снижения «жадности» не всех числителей а только избранных ставьте после них знак вопроса, например: /<p>(.*?)<\/p>/i; этот способ изменяет «жадность» числителя на противоположную от основной.
    Числитель может указываться не только после символа, класса, под-шаблона, но и после обратной ссылки.
    Подшаблоны и обратные ссылки
    Сами по себе подшаблоны (части шаблона, заключенные в круглые скобки) не влияют на функционирование регулярных выражений и могут служить исключительно для удобства группировки (они могут быть вложенными). Подшаблон может использоваться для ограничения набора альтернатив. При использовании же с обратными ссылками подшаблоны являются действенным инструментом поиска. Например, для поиска содержимого парных тегов может использоваться запись: *<([*>]*)>(.*)</\\1>*.

    Содержание  Назад  Вперед