string.find выдает неправильное значение
local num = string.find("i want this to work --", "--")
return num
Вот этот код по идее должен вернуть 21, но возвращает 1
Что делаю не так?
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Символ - является "специальным" в шаблонах Lua и является "нежадным" квантификатором, аналогичным *? в регулярных выражениях.
Его надо экранировать с помощью символа %:
string.find("i want this to work --", "%-%-")
См. пример работы кода онлайн.
Другие специальные символы в шаблонах Lua (на англ.):
(- начало захватывающей подмаски)- конец захватывающей подмаски.- любой символ%- экранирующий символ+- жадный квантификатор, находящий модифицируемый шаблон 1 и более раз-- нежадный квантификатор, находящий модифицируемый шаблон 0 и более раз*- жадный квантификатор, находящий модифицируемый шаблон 0 и более раз?- жадный квантификатор, находящий модифицируемый шаблон 1 или 0 раз[- начало символьного класса^- начало строки$- конец строки