Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua string.match太广泛了,还有其他更好的选择吗?_Lua_Scripting - Fatal编程技术网

Lua string.match太广泛了,还有其他更好的选择吗?

Lua string.match太广泛了,还有其他更好的选择吗?,lua,scripting,Lua,Scripting,目前,我正在将一组字符串从家庭自动化控制器传递到我正在开发的驱动程序。 我收到诸如ZAA和其他可能是AA但字符串的消息。match有时会将AA与ZAAif语句匹配 这个问题比这两个字符串传播得更广(可能有10-15个其他相似之处)。 我知道我可以在if/elseif语句中添加更多条件,但肯定有一个精确的匹配版本 任何想法都将不胜感激 榜样即使字符串是“AA”,它也将匹配“ZAA” 如果您想要精确的匹配,只需使用= 如果stringInput=='ZAA',则 打印('I matched:ZAA'

目前,我正在将一组字符串从家庭自动化控制器传递到我正在开发的驱动程序。
我收到诸如
ZAA
和其他可能是
AA
字符串的消息。match
有时会将
AA
ZAA
if语句匹配

这个问题比这两个字符串传播得更广(可能有10-15个其他相似之处)。
我知道我可以在
if/elseif
语句中添加更多条件,但肯定有一个精确的匹配版本

任何想法都将不胜感激

榜样即使字符串是“AA”,它也将匹配“ZAA”


如果您想要精确的匹配,只需使用
=

如果stringInput=='ZAA',则
打印('I matched:ZAA')
elseif stringInput=='AA'然后
打印('I匹配:AA')
结束

如果您想要精确的匹配,只需使用
=

如果stringInput=='ZAA',则
打印('I matched:ZAA')
elseif stringInput=='AA'然后
打印('I匹配:AA')
结束
来自

string.match(s,pattern[,init]) 在字符串s中查找模式的第一个匹配项(见§6.4.1)。如果它找到一个,则匹配 从模式返回捕获;否则返回nil。如果 模式指定不捕获,然后返回整个匹配。A. 第三,可选的数值参数init指定从何处开始 搜索;其默认值为1,可以为负值

所以

将匹配,因为
“AA”
位于
“ZAA”

您混淆了函数参数
s
pattern

本地输入字符串=“AA” 输入字符串:匹配(“ZAA”)

将不匹配,因为模式包含的字符多于inputString

但作为

local inputString = "ZAA"
两者都匹配吗

inputString:match(“AA”)
inputString:match(“ZAA”)
您可能需要添加更多约束

请阅读手册

string.match(s,pattern[,init]) 在字符串s中查找模式的第一个匹配项(见§6.4.1)。如果它找到一个,则匹配 从模式返回捕获;否则返回nil。如果 模式指定不捕获,然后返回整个匹配。A. 第三,可选的数值参数init指定从何处开始 搜索;其默认值为1,可以为负值

所以

将匹配,因为
“AA”
位于
“ZAA”

您混淆了函数参数
s
pattern

本地输入字符串=“AA” 输入字符串:匹配(“ZAA”)

将不匹配,因为模式包含的字符多于inputString

但作为

local inputString = "ZAA"
两者都匹配吗

inputString:match(“AA”)
inputString:match(“ZAA”)
您可能需要添加更多约束


请阅读手册

你的输入看起来怎么样?如果它以模式开头,那么您可以简单地与
“^AA”
匹配。否则,您可以添加一些示例输入吗?请尝试反转参数:
string.match(stringInput,“ZAA”)
。您的输入看起来如何?如果它以模式开头,那么您可以简单地与
“^AA”
匹配。否则,您可以添加一些示例输入吗?请尝试反转参数:
string.match(stringInput,“ZAA”)
。这可能是我的答案,非常合理。。。我真的不知道我为什么不使用这些运营商,它只是我们为另一家公司编写的类似驱动程序的副本。我明天就试试这个!这可能是我的答案,而且很有道理。。。我真的不知道我为什么不使用这些运营商,它只是我们为另一家公司编写的类似驱动程序的副本。我明天就试试这个!
local inputString = "ZAA"