任何人都可以告诉我为什么我无法在下面的代码中选择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,有效 - >模式## \ ##,有效
答案 0 :(得分:1)
首先,你在模式中错过了[dD]
,我猜这是一个错字。
还有一些其他问题。
?
仅适用于单个字符,因此
"\\([%%w_]+)?"
无效。%%
是转义的%
字符,[%%w_]
匹配%
个字符,w
或下划线_
,wihch不是你的期望。固定模式为[cC][wW][iI][nN][dD]7[xX]32\[%w_]+
。