substr_count(PHP 4) substr_count - вычисляет количество появлений подстроки. Описаниеint substr_count (string haystack, string needle) substr_count() возвращает количество появлений подстроки needle в строке haystack.
|
||||||||||
|
||||||||||
Рассмотрим проблему совпадения строки в скобках, когда допускается неограниченное
вложение скобок. Без использования рекурсии лучшее, что можно сделать, это использовать
патэрн, который совпадает на некоторую фиксированную глубину вложения. Невозможно
обработать вложения на произвольно большую глубину. В Perl 5.6 имеется экспериментальная
возможность, позволяющая (помимо прочего) выполнять рекурсию регулярных выражений.
Специальный элемент (?R) предоставлен для этого специфического case/варианта
рекурсии.
PCRE-патэрн разрешает проблему скобок (предполагая, что опция PCRE_EXTENDED
установлена так, что пробел игнорируется):
\( ( (?>[^()]+) | (?R) )* \)
Вначале он совпадает с открывающей скобкой. Затем - с любым количеством подстрок,
которые могут быть либо последовательностями не-скобок, либо рекурсивным совпадением
самого патэрна (т.е. корректно заключённой в скобки подстрокой). Наконец, идёт
закрывающая скобка.
Этот особый пример патэрна содержит вложенное бесконечное повторение, и, таким
образом, использование однократного субпатэрна для совпадения со строками из
не-скобок очень важно, когда патэрн применяется к строкам, которые не
совпадают. Например, если его применить к
(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
то он быстро даст "нет совпадений". Однако, если однократный/once-only
субпатэрн не используется, поиск совпадения будет продолжаться длительное время,
так как есть много различных способов, которыми повторения + и * могут кроить
строку-субъект, и все они должны быть проверены, прежде чем будет выдано сообщение
о неудаче поиска.
| |