检查变量是否与模式LUA匹配

时间:2016-07-07 18:30:35

标签: lua

所以,如果我有变量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

我可以请一些帮助吗

3 个答案:

答案 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