我试图找出一个字符串是否有06个前导星号,例如如果字符串有“****** abc”,那么如果字符串有“* abc”或“** abc”或“*”则传递然后失败
我试过这个在线(https://www.lua.org/cgi-bin/demo)
s1 = "**"
if (string.match(s1, '^****$')) then
print "pattern matches"
else
print "pattern does not match"
end
但它似乎不起作用。
Lua没有正则表达式,因为它重量轻。但是,下面的模式符合您要完成的任务。
s1 = "*******TEST"
if (string.match(s1, '^[*][*][*][*][*][*]')) then
print "pattern matches"
else
print "pattern does not match"
end
来自Lua Reference Manual 6.4.1 Patterns:
字符类:字符类用于表示一组字符。在描述字符类时允许以下组合:
x :(其中x不是魔术字符之一^ $()%。[] * + - ?)表示字符x本身。
...
%x :(其中x是任何非字母数字字符)表示字符x。这是逃避魔法角色的标准方法。
所以*是一个神奇的角色。除非在像[*]
这样的角色类中使用,否则必须对其进行转义。
匹配任何前面带有正好6个星号的字符串的模式是qazxsw poi
"^%*%*%*%*%*%*[^*]+"
确保您剩余的字符串不包含其他星号。通过匹配至少一个非星号字符。
[^ set]:表示set的补码,其中set如上所述。
...
单个字符类后跟'+',它匹配类中一个或多个重复的字符。这些重复项总是匹配最长的序列;