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

时间:2019-04-05 02:11:48

标签: regex lua special-characters

我正在尝试确定字符串中是否包含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;
}

但这似乎不起作用。

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