У меня есть этот шаблон:
^u.meta(\.|$)
ОЖИДАЕМОЕ ПОВЕДЕНИЕ
^u.meta(\.|$)
будет соответствовать всем ролям, например:
u.meta
u.meta.admin
u.meta.admin.system
u.meta.*
Где, как это не должно совпадать с чем-то вроде ниже:
u.meta_admin
u.meta_admin_system
Я проверил этот шаблон на сайте https://regex101.com/ regexp tester
.
ПРОБЛЕМА:
Я должен реализовать этот шаблон с помощью скрипта lua
. но получаю invalid escape sequence near '\.'
:
-- lua script
> return string.match("u.meta.admin", '^u.meta(\.|$)')
stdin:1: invalid escape sequence near '\.'
И я попытался добавить двойной \\
, а также удалить escape-символ '\' в этом регулярном выражении, но в ответ получил ноль:
-- lua script
> return string.match("u.meta.admin", '^u.meta(\\.|$)')
nil
> return string.match("u.meta.admin", '^u.meta(.|$)')
nil
%
вместо\
. Используйте^u%.meta(%.|$)
- person Wiktor Stribiżew   schedule 26.01.2016return string.match("u.meta.admin", '^u%.meta(%.|$)')
все равно возвращаетnil
:( - person przbadu   schedule 26.01.2016(%.|$)
не поддерживается. Каковы ваши намерения здесь? Вы хотите убедиться, чтоmeta
является целым словом (за которым следует символ, не являющийся словом?). Попробуйтеprint(string.match("u.meta.admin", '^u%.meta%f[%A]'))
- person Wiktor Stribiżew   schedule 26.01.2016Expected Behaviour
в вопросе.u.meta
должно совпадать с чем-то вродеu.meta.*
, включаяu.meta
- person przbadu   schedule 26.01.2016print(string.match("u.meta.admin", '^u%.meta%f[%A]'))
работает, теперь я не хочу, чтобыu.meta_admin
соответствовало этому регулярному выражению, только соответствуетu.meta.*
, включаяu.meta
, ПРИМЕЧАНИЕ: символ точки (.) и символ подчеркивания (_) - person przbadu   schedule 26.01.2016