Я ищу количество повторений символов в настройке шаблона Lua. Пытаюсь проверить количество символов в строке. Как я читал в руководстве, даже с классами символов это все еще очень ограничивает, потому что мы можем только соответствовать строкам фиксированной длины.
Чтобы решить эту проблему, шаблоны поддерживают эти четыре оператора повторения:
- '*' Соответствует предыдущему символу (или классу) ноль или более раз, насколько это возможно.
- '+' Соответствует предыдущему символу (или классу) один или несколько раз, насколько это возможно.
- '-' Соответствует предыдущему символу (или классу) ноль или более раз, как можно меньшее количество раз.
- '?' Сделайте предыдущий символ (или класс) необязательным.
Итак, нет информации о фигурных скобках {}
, например,
{1,10}; {1,}; {10};
не работает.
local np = '1'
local a = np:match('^[a-zA-Z0-9_]{1}$' )
возвращает np = nil
.
local np = '1{1}'
local a = np:match('^[a-zA-Z0-9_]{1}$' )
возвращает np = '1{1}'
:)
Этот url говорит, что нет таких волшебных символов:
Некоторые символы, называемые магическими символами, имеют особое значение при использовании в шаблоне. Волшебные персонажи
( ) . % + - * ? [ ^ $
Фигурные скобки работают только как простой текст и не более того. Я прав? Как лучше всего избежать этой «ошибки»?
Можно прочитать обычное использование фигурных скобок, например, здесь.
%d%d+
). Также вы можете использовать библиотеку Lua rex pcre. - person moteus   schedule 01.10.2015np:match('^'..('[%w_]'):rep(k)..'$')
- person Egor Skriptunoff   schedule 01.10.2015#np==k and not np:find'[^%w_]'
- person Egor Skriptunoff   schedule 01.10.2015> require "rex_pcre" > return rex_pcre.new("^[a-zA-Z0-9_]{2}$"):exec("12")
. - person Wiktor Stribiżew   schedule 01.10.2015