^
Объявляет начало объекта (или строки в многострочном режиме). То есть этот символ определяет, что искомый текст должен находиться в начале строки. Альтернатива: «A»
$
Объявляет конец объекта (или строки в многострочном режиме). То есть этот символ определяет, что искомый текст должен находиться в конце строки. Альтернативы: «», «z»
.
Совпадает с любым символом, кроме символа перевода строки (по умолчанию)
[
Начинает определение символьного класса
]
Заканчивает определение символьного класса
|
Разделяет перечисление альтернативных вариантов
(
Начинает подшаблон регулярное (подвыражение)
)
Заканчивает подшаблон
?
Расширяет значение «(», квантификаторов 0 или 1, и квантификатор минимизации
*
0 или больше повторений (квантификатор)
+
1 или больше повторений (квантификатор)
{
Начинает минимальный/максимальный квантификатор
}
Заканчивает минимальный/максимальный квантификатор
Шаблон ограничен восклицательными знаками. Первая «^» значит, что мы ищем совпадения в начале строк, потом идет символ «<» – его и ищем в строке, после него должно идти все, что угодно, кроме обратного слэша (конструкция «[^]» ), «+» говорит, что стоящий перед ним символ повторяется один и более раз и заканчивается все это символом «>». Таким образом, выделяются все теги в начале строк.
-
<?
//считываем файл в строку
$str = file_get_contents('1.htm');
$pattern = '!s[А-Яа-я]+'.
's([А-Я].s*)([А-Я].s*)$!m';
// шаблон ограничен восклицатель-
// ными знаками, m – модификатор,
// включающий многострочный режим
// первый s означает, что перед
// фамилией должен идти пустой
// символ (например, пробел)
// [А-Яа-я] задает одну из букв
// алфавита в любом регистре,а в
// комбинации со знаком плюс
// определяет,что эта буква
// повторяется один и более
// раз следующий s означает, что
// между фамилией и инициалами
// должен быть пробел
// Далее идет подвыражение,
// определяющее инициалы.
// Это буква от А до Я, после
// которой стоит точка ('.')
// Экранируем точку, чтобы
// избавиться от ее специального
// значения. После буквы с точкой
// может идти или не идти пробел
// или несколько. Вся конструкция
// повторяется минимум два раза.
// Последний символ $ означает,
// что фамилия с инициалами
// должны находиться в конце
// строки.
//осуществляем поиск
$n = preg_match_all ($pattern,
$str, $res);
// выводим результаты