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 |