如何在Lua中编写一个等价于/(\(\))的正则表达式?$ / in js

时间:2011-05-05 02:17:21

标签: regex lua

我想编写一个与以下Javascript正则表达式相同的正则表达式:

/^(\(\))?$/ 匹配“()”和“”

我在Lua中找不到等效的表示法。我遇到的问题是我可以创建多个字符,然后是“?”。

例如,

^%(%)$可用于匹配“()”

^%(%)?$可用于匹配“(”和“()”

^(%(%))?$不起作用。

2 个答案:

答案 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("()") )