所以,如果我有变量name
。如何检查它是否与模式匹配?
例如,我想检查变量名是否等于text_text
之类的模式。所以在开头的话然后强调词语。没有数字。
我真的不知道从哪里开始。
local pattern = something
if name == pattern then
更新**我尝试了以下内容,但仍然无法正常工作。
local pattern = "a%%sa%"
if string.match (name, pattern) then
return 1
else
return 0
end
也试过这种方式
local pattern = "a%_a%"
if string.match (name, pattern) then
return 1
else
return 0
end
我可以请一些帮助吗
答案 0 :(得分:2)
匹配与下划线链接的任何小写字母组合的模式将是:
"%l+_%l+"
%l
指定任何小写字母
后跟一个+
,它指定了它所遵循的符号的编号。
所以%l+
表示“至少有一个小写字母”
_
只是一个下划线。
因此模式"%l+_%l+"
表示“至少有一个小写字母后跟一个下划线,后跟至少一个小写字母
请参考https://www.lua.org/pil/20.2.html和/或https://www.lua.org/manual/5.3/manual.html#6.4.1了解可以构建模式的所有可能砖块。
您可以在字符串标准库提供的函数中使用这些模式。 string.find,string.gsub等等。
如果你想更多地使用那些东西,请查看LPeg。
答案 1 :(得分:1)
试试这个:
function match(string)
local string = string:match('^(%a+_%a+)$')
if string then
return true
else
return false
end
end
local string = match('hi I'm webrom')
print(string)
output = false
local string = match('14545_15456')
print(string)
output = false
local string = match('hello_world')
print(string)
output = true
local string = match('HELLO_WORLD')
print(string)
output = true
模式%a匹配任何字母。
答案 2 :(得分:0)
在lua中的字符串模式中, 任何在parantheses之间的东西将被退回 你也可以用一个特殊的字符来做%,就像一个字母一样,以匹配一个字母 在你到达下一个字符/字符集之前,在%a之后添加+将使你在模式中检测到最可能的字母 例如:
s = "Hello Julia my love ! Here's a hug!"
lovername,gift = string.match(s,"(%a+) my love ! Here's a (%a+)")
print(lovername.." was given a "..gift)
在您的示例中,您可以执行此操作:
var = "hello_world"
if (string.match(var, "%a+_%a+")) then -- In this example, _ will be normal
print("Valid variable name !")
else
print("Invalid variable name")
end