parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Небольшое уточнение по match

Maxx 07.01.2007 07:23 / 07.01.2007 08:04

В доке сказано:
Если в шаблоне не используются круглые скобки, то оператор возвращает булевое значение истина при обнаружении подстроки, соответствующей шаблону, или ложь, если совпадений не найдено.
На самом деле если совпадение не найдено то возвращается false, но если найдено - то возвращается не true, а таблица с одной строкой, причем пустой (если не указано ' )
@main[]
$string[baa]
$t[^string.match[0]]
в $t - обьект класса bool (false)
@main[]
$string[baa]
$t[^string.match[a]]
^t.count[]
$t - обьект класса table
Результат - 1

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

Внимание: значения столбцов prematch, match, postmatch вычисляются только если указана опция ' .
если в предыдущем добавить опцию g, то будет создана опять же пустая таблица с двумя строками. (если совпадений 100 - то и строк будет сто). Непонятно зачем она вообще создается, не правильнее ли сразу возвращать количество совпадений (int) если не укзана опция ', и false (или 0), если ни одного не найдено?