Lua模式选择特定字符串后跟任何单词

时间:2015-03-24 10:51:22

标签: string lua lua-patterns

任何人都可以告诉我为什么我无法在下面的代码中选择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,有效 - >模式## \ ##,有效

1 个答案:

答案 0 :(得分:1)

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

还有一些其他问题。

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

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