Lua 模式到 select 后跟任何单词的特定字符串

Lua pattern to select particular string followed by any word

任何人都可以告诉我为什么我不能在下面的代码中 select 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)

我想要一个模式 select 格式为 CWINDX32\any 的任何单词,其中 CWINDX32 应该是不区分大小写的单词。

请注意,单词只能包含字母数字字符和下划线,并且可以以空格或 ; 结尾。或 , 或 :

示例:

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

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

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

首先,您在模式中遗漏了 [dD],我猜这是一个错字。

还有一些其他问题。

  • ? in Lua 模式只适用于单个字符,所以 "\([%%w_]+)?" 无效。
  • %% 是转义的 % 字符,[%%w_] 匹配 % 字符,w 或下划线 _,wihch不是你所期望的。

固定模式是[cC][wW][iI][nN][dD]7[xX]32\[%w_]+