【发布时间】:2016-01-26 10:49:10
【问题描述】:
我有这个模式:
^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 '\.'
我尝试在该正则表达式中添加 double \\ 以及删除 '\' 转义字符,但得到 nil 作为回报:
-- lua script
> return string.match("u.meta.admin", '^u.meta(\\.|$)')
nil
> return string.match("u.meta.admin", '^u.meta(.|$)')
nil
【问题讨论】:
-
您需要使用
%而不是\。使用^u%.meta(%.|$) -
@WiktorStribiżew:感谢您的快速回复,我正在测试该正则表达式
-
return string.match("u.meta.admin", '^u%.meta(%.|$)')仍然返回nil:( -
是的,因为不支持
(%.|$)。你在这里的意图是什么?您想确保meta是一个完整的单词(后跟一个非单词字符?)。试试print(string.match("u.meta.admin", '^u%.meta%f[%A]')) -
我会试一试的。我的意图是因为我在 qustion 中更新了
Expected Behaviour。u.meta应与u.meta.*之类的任何内容匹配,包括u.meta
标签: lua lua-patterns