Lua模式,选择特定的字符串后面可以跟任何单词。

有人能告诉我为什么我不能在下面的代码中选择CWIND7x32 \ ab_c1 吗?

s="[cC][wW][iI][nN]7[xX]32"
local p= (tostring(s).."\\([%%w_]+)?")
local c = "##\\##"
print(p)
tstr = "Pattern CWINd7x32\\ab_c1 is valid"
print(tstr)
res=string.gsub(tstr,p,c)
print(res)

我想要一个模式来选择任何格式为CWINDX32 \任何单词的单词,其中CWINDX32应为不区分大小写的单词。

请注意,该单词只能由字母数字字符和下划线组成,并且可以以空格或;或,或:结束。

示例:

模式CWINd7x32\ab_c1有效 - >模式##\##有效

模式cWIND7x32\efg;有效 - >模式##\##;有效

模式CWIND7X32\random_user有效 - >模式##\##,有效

点赞
用户1009479
用户1009479

首先,模式中缺少 [dD],我想这是一个笔误。

还存在其他一些问题。

  • 在 Lua 模式中,? 只适用于一个字符,因此 "\\([%%w_]+)?" 是无效的。
  • %% 表示转义字符 %[%%w_] 匹配一个 % 字符、一个 w 或下划线 _,与预期不符。

修正后的模式为 [cC][wW][iI][nN][dD]7[xX]32\[%w_]+

2015-03-24 11:13:27