我想编写一个与以下Javascript正则表达式相同的正则表达式:
/^(\(\))?$/
匹配“()”和“”
我在Lua中找不到等效的表示法。我遇到的问题是我可以创建多个字符,然后是“?”。
例如,
^%(%)$
可用于匹配“()”
^%(%)?$
可用于匹配“(”和“()”
但^(%(%))?$
不起作用。
答案 0 :(得分:3)
正如您所发现的,Lua模式语言中的?
修饰符仅适用于单个字符类。而不是使用模式/正则表达式,如何更简单:foo == '()' or foo == ''
?或者你真正的问题是什么更复杂?如果是,请告诉我们您真正想做的事情。
答案 1 :(得分:2)
您可以使用LPeg(Lua的模式匹配库)。
local lpeg = require "lpeg"
-- this pattern is equivalent to regex: /^(\(\))?$/
-- which matches an empty string or open-close parens
local p = lpeg.P("()") ^ -1 * -1
-- p:match() returns the index of the first character
-- after the match (or nil if no match)
print( p:match("()") )