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

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


Осуществляет поиск в строке по шаблону.
Шаблон - это строка с регулярным выражением, совместимым с PCRE (Perl compatible regular expressions) или объект класса
regex [3.4.0].
Частичный перевод описания PCRE приведен в Приложении 4.

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

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

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

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

Замечание 1: значения столбцов
prematch, match, postmatch вычисляются только если указана опция '.
Замечание 2: начения столбцов 1, 2,…, вычисляются лишь в случае, если в шаблоне указаны круглые скобки.
Замечание 3
: если в шаблоне вам нужно использовать круглые скобки, но не требуется запоминания заключённого в них в результирующей таблице, то вместо них лучше использовать конструкцию (?:)


Примеры использования
$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



In order to add comments you must register.
Copyright © 1997–2021 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 16.06.2012