Функции, использующие регулярные выражения

Содержание  Previous  Next

ARRCOMP([#выражение 1],[$выражение 2],[$выражение 3]) - возвращает индекс элемента массива с названием [$выражение 2], соответствующего регулярному выражению [$выражение 3]. Поиск начинается с элемента номер [#выражение 1]; индексация элементов массива ведётся с нуля. Параметр [#выражение 1] может отсутствовать, при этом он принимается равным 0. Если элемент не найден, функция возвращает -1.

Поиск происходит среди текстовых элементов массива. Примеры:

 

 ARRCOMP(0,'A','This') - найдёт строку 'This' среди текстовых элементов массива "A" (или вернёт -1, если такого значения не существует)

 ARRCOMP(2,'A','abc\d+') - найдёт строку, соответствующую регулярному выражению "abc\d+", в текстовых значениях массива "A" (первые два элемента массива игнорируются)

 ARRCOMP(0,'A','.*string.*') - аналогично предыдущему примеру, но поиск осуществляется по всем текстовым элементам массива

 ARRCOMP('A','This') - эквивалентно 1му варианту

 

STRCOMP([$выражение],[$шаблон]) - проводит сравнение строки [$выражение] на соответствие регулярному выражению [$шаблон]. Возвращает -1, если строка соответствует шаблону, иначе 0. Сравни с функцией "STRFIND".

 

STRFIND([$выражение],[$шаблон],[#номер]) - возвращает подстроку в строке [$выражение], соответствующую группе с номером [#номер] регулярного выражения [$шаблон]. Если подстрока с указанным номером отсутствует, то возвращается пустая строка. Нумерация групп подстрок начинается с 1. Если параметр [#номер] отсутствует или равен 0, то возвращается подстрока, соответствующая всему регулярному выражению [$шаблон]. Примеры:

 

 STRFIND(' идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 0) = ''

 STRFIND('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 1) = 'идти'

 STRFIND('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 2) = 'к'

 STRFIND('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 3) = 'пещере'

 STRFIND('идти к пещере', '^(\S+)\s(\S+)(\s(\S+))?$', 4) = 'пещере'

 STRFIND('искать ключ', '^(\S+)\s(\S+)(\s(\S+))?$', 1) = 'искать'

 STRFIND('искать', '^(\S+)\s(\S+)(\s(\S+))?$', 0) = ''

 STRFIND('искать', '^(\S+)\s(\S+)(\s(\S+))?$', 1) = ''

 STRFIND('искать', '^(\S+)(\s(\S+)(\s(\S+))?)?$', 1) = 'искать'

 STRFIND('идти к дому', 'к\s(\S+)', 0) = 'к дому'

 STRFIND('идти к дому', 'к\s(\S+)') = 'к дому'

 STRFIND('идти к дому', 'к\s(\S+)', 1) = 'дому'

 STRFIND('идти к своему дому', 'к\s(\S+)', 1) = 'своему'

 

STRPOS([$выражение],[$шаблон],[#номер]) - возвращает позицию символа, с которого начинается вхождение подстроки в строке [$выражение], соответствующей группе с номером [#номер] регулярного выражения [$шаблон]. Если подстрока с указанным номером отсутствует, то возвращается 0. Нумерация групп подстрок начинается с 1. Если параметр [#номер] отсутствует или равен 0, то возвращается позиция символа, с которого начинается вхождение подстроки, соответствующей всему регулярному выражению [$шаблон].

Примеры:

 

 STRPOS(' идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 0) = 0

 STRPOS('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 1) = 1

 STRPOS('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 2) = 6

 STRPOS('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 3) = 8

 STRPOS('идти к пещере', '^(\S+)\s(\S+)(\s(\S+))?$', 4) = 8

 STRPOS('искать ключ', '^(\S+)\s(\S+)(\s(\S+))?$', 1) = 1

 STRPOS('искать', '^(\S+)\s(\S+)(\s(\S+))?$', 0) = 0

 STRPOS('искать', '^(\S+)\s(\S+)(\s(\S+))?$', 1) = 0

 STRPOS('искать', '^(\S+)(\s(\S+)(\s(\S+))?)?$', 1) = 1

 STRPOS('идти к дому', 'к\s(\S+)', 0) = 6

 STRPOS('идти к дому', 'к\s(\S+)') = 6

 STRPOS('идти к дому', 'к\s(\S+)', 1) = 8

 STRPOS('идти к своему дому', 'к\s(\S+)', 1) = 8

 

Также см. раздел "Использование регулярных выражений".