Язык скриптования сайтов Parser 3

Stringmatch


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


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

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

Осуществляет поиск в строке по шаблону.

Шаблон - это регулярное выражение, совместимое с PCRE (Perl compatible regular expressions).

Частичный перевод описания PCRE приведен в Приложении 4.



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

i - не учитывать регистр;

x - игнорировать символы white space и разрешить #комментарий до конца строки;

s - символ $ считать концом всего текста (опция по умолчанию);

m - символ $ считать концом строки, но не всего текста;

g - найти все вхождения строки (а не только первое);

' - вычислять значения столбцов prematch, match, postmatch.

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

Если в шаблоне не используются круглые скобки, то оператор возвращает булевое значение истина при обнаружении подстроки, соответствующей шаблону, или ложь, если совпадений не найдено.

Если в шаблоне используются круглые скобки, то вместо булевого значения оператор создает таблицу совпадений (объект класса table) со столбцами prematch, match, postmatch, 1, 2,…, n,

где:

prematch   столбец с подстрокой от начала строки до совпадения   

match      столбец с подстрокой, совпавшей с шаблоном   

postmatch   столбец с подстрокой, следующей за совпавшей подстрокой до конца строки   

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

Если указана опция поиска g, будет создана таблица найденного по шаблону (по одной строке на каждое вхождение).

При этом не важно, есть в шаблоне круглые скобки или нет.

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



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

$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

Copyright © 1997?2004 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 24.03.2004

Содержание раздела