string Alt ←

Метод match

Поиск подстроки по шаблону.

^строка.match[шаблон]
^строка.match[шаблон][опции_поиска]

Метод осуществляет поиск в строке по шаблону. Шаблон — это строка с регулярным выражением, совместимым с PCRE или объект класса regex [3.4.0]. Частичный перевод описания PCRE приведен в Приложении 4.

Предусмотрены следующие опции поиска:

i — не учитывать регистр;
x — игнорировать символы white space и разрешить #комментарий до конца строки;
s — символ $ считать концом всего текста (опция по умолчанию);
m — символ $ считать концом строки, но не всего текста;
U — инвертировать «жадность» квантификаторов (они становятся «не жадными», чтобы сделать их «жадными», необходимо поставить после них символ ?); [3.3.0]
g — найти все вхождения строки (а не только первое);
n — вернуть число с количеством совпадений вместо таблицы;
' — вычислять значения столбцов prematch, match, postmatch.

Поскольку символы ^ и $ используются в Parser, в шаблоне вместо символа ^ используется строка ^^, а вместо символа $ — строка ^$ (см. Литералы).

Если указана опция поиска g, будет создана таблица (объект класса table) найденного по шаблону (по одной строке на каждое вхождение). Если опция g не была указана, то таблица будет содержать лишь одну строку с первым вхождением. Если не было найдено ни одного совпадения, то результатом операции будет пустая таблица. Если указана опция n, то вместо таблицы с результатами будет возвращаться число — количество найденных совпадений.

Таблица совпадений имеет следующие столбцы: 1, 2,…, n, prematch, match, postmatch, где:

prematch — столбец с подстрокой от начала строки до совпадения;
match — столбец с подстрокой, совпавшей с шаблоном;
postmatch — столбец с подстрокой, следующей за совпавшей подстрокой до конца строки;
1, 2,…, n — столбцы с подстроками, соответствующими фрагментам шаблона, которые заключены в круглые скобки, n — номер открывающей круглой скобки.

Значения столбцов prematch, match, postmatch вычисляются, только если указана опция '.

Значения столбцов 1, 2,…, n вычисляются лишь в случае, если в шаблоне указаны круглые скобки.

Если в шаблоне нужно использовать круглые скобки, но не требуется запоминания заключенного в них в результирующей таблице, то вместо них лучше использовать конструкцию (?:).

Примеры использования

$str[www.parser.ru?user=admin]

^if(^str.match[
	\? #есть разделитель
	.+ #и есть хоть что-то за ним
][x]){
	Есть совпадение
}{
	Совпадений нет
}

Выведет на экран: Есть совпадение.

Бывает, что даже самому разработчику через какое-то время трудно разобраться в своем регулярном выражении. Настоятельно советуем задавать комментарии к частям сложного регулярного выражения. Для этого нужно указать опцию x, которая включает расширенный синтаксис выражений, допускающий комментарии.
$str[www.parser.ru?user=admin]
$mtc[^str.match[(\?.+)][']]
^mtc.save[match.txt]

Создаст файл match.txt, содержащий такую таблицу:

prematch match postmatch 1
www.parser.ru ?user=admin ?user=admin