Lua模式括号和0或1次出现

Aid*_*api 5 regex lua lua-patterns

我正在尝试将字符串与模式匹配,但有一件事我还没弄清楚.在正则表达式中我会这样做:

Strings:
en
eng
engl
engli
englis
english

Pattern:
^en(g(l(i(s(h?)?)?)?)?)?$
Run Code Online (Sandbox Code Playgroud)

我希望所有的字符串都匹配.在Lua模式匹配中,我无法使其工作.

即使是这样一个更简单的例子也行不通:

Strings:
fly
flying

Pattern:
^fly(ing)?$
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做这个吗?

Bar*_*ers 8

你不能让比赛组可选(或赘述)使用Lua的量词?,*,+-.

在模式中(%d+)?,问号"失去"其特殊含义,并且只需?通过执行以下代码行来匹配文字:

text = "a?"
first_match = text:match("((%w+)?)")
print(first_match)
Run Code Online (Sandbox Code Playgroud)

将打印:

a?
Run Code Online (Sandbox Code Playgroud)

AFAIK,你最接近Lua的将是使用这种模式:

^eng?l?i?s?h?$
Run Code Online (Sandbox Code Playgroud)

其中(当然)相匹配的字符串一样"enh","enls"...也是如此.