使用 Lua 中的正则表达式查找前导星号

我想找出一个字符串是否有 06 个前导星号 例如 如果字符串为"******abc",则通过 如果字符串为" *abc","**abc"或"*"则不通过

我已经在线尝试过(https://www.lua.org/cgi-bin/demo

s1 = "**"

if (string.match(s1, '^****$')) then
 print "模式匹配"
else
 print "模式不匹配"
end

但是它似乎不起作用。

点赞
用户4290902
用户4290902

Lua 不支持正则表达式,因为它是轻量级的。然而,下面的模式与您想实现的相匹配。

s1 = "*******TEST"

if (string.match(s1, '^[*][*][*][*][*][*]')) then
 print "pattern matches"
else
 print "pattern does not match"
end
2019-04-05 03:33:37
用户2858170
用户2858170

Lua 参考手册 6.4.1 模式:

字符类: 字符类用于表示一组字符。下列组合可以用于描述字符类:

x:(其中x不是以下魔法字符之一:^$()%.\[\]\*+-?)表示字符 x 本身。

...

%x:(其中x是任何非字母数字字符)表示字符 x。这是转义魔法字符的标准方式。

所以 * 是一个魔法字符。必须进行转义,除非在字符类中使用,例如 [*]

一个匹配由恰好6个星号(*)引导的任意字符串的模式为 "^%*%*%*%*%*%*[^*]+"

[^*]+ 确保剩余的字符串不包含其他星号。通过匹配至少一个非星号字符。

\[^set\]:表示集合的补集,其中集合按上述方式解释。

...

后跟 + 的一个单字符类,用于匹配一个或多个字符类中的字符的重复项。这些重复项始终匹配最长可能的序列。

2019-04-05 05:40:18