我正在尝试确定字符串中是否包含06个前导星号 例如 如果字符串具有“ ****** abc”,则通过 如果字符串包含“ * abc ”或“ ** abc”或“ *”,则失败
我已经尝试过此在线(https://www.lua.org/cgi-bin/demo)
int videohex = 0xb8000;
int printchar(char c) {
char* vidmem = (char*) videohex;
*vidmem = c;
videohex = videohex + 2;
}
但这似乎不起作用。
答案 0 :(得分:6)
来自Lua Reference Manual 6.4.1 Patterns:
字符类:字符类用于表示一组字符。在描述以下内容时,可以使用以下组合: 角色类别:
x :(其中x不是魔术字符^ $()%之一。[] * +-?) 代表字符x本身。
...
%x :(其中x是任何非字母数字字符)表示字符x。这是逃避魔术角色的标准方法。
所以*是一个魔术字符。除非用于[*]
这样的字符类中,否则必须转义。
与任何以6个星号开头的字符串匹配的模式为"^%*%*%*%*%*%*[^*]+"
[^*]+
确保您剩余的字符串不包含其他星号。通过匹配至少一个非星号字符。
[^ set]:表示set的补码,其中set解释为 以上。
...
单个字符类,后跟“ +”,它与一个或多个匹配 班上人物的重复。这些重复项将 总是匹配最长的序列;
答案 1 :(得分:1)
Lua重量轻,所以没有正则表达式。但是,以下模式与您要完成的任务相符。
s1 = "*******TEST"
if (string.match(s1, '^[*][*][*][*][*][*]')) then
print "pattern matches"
else
print "pattern does not match"
end