在模式匹配中使用 Lua 变量

我想知道在 Lua 中是否可以在模式匹配中使用变量。就像以下示例中的某些类似内容:

var = "hello"
pattern = string.match(datasource, "(var)%s(a%+)")

我需要这样做的原因是变量“var”会定期更改。 (它将在循环中)

提前致谢。

原文链接 https://stackoverflow.com/questions/6692363

点赞
stackoverflow用户107090
stackoverflow用户107090

使用 "("..var..")%s(a%+)" 替代。

2011-07-14 11:40:11
stackoverflow用户840823
stackoverflow用户840823

Lua 在引号内部不处理字符串插值。相反,您需要使用变量作为变量引用并将其余部分作为引号字符串进行连接。

"("..var..")%s(a%+)" 以 "(" 作为字符串字面量开始,将变量连接起来,然后使用字符串字面量完成其余字符串。

2011-07-14 11:43:46
stackoverflow用户9364115
stackoverflow用户9364115

我需要相同的东西,一个在模式匹配中使用的变量,但上面的解决方案对我不起作用。如果这篇文章能够为某个人提供帮助,我将发布我的解决方案。在网上找不到其他任何类似的东西。

我正在阅读一个以“:”分隔的文件(文件名:tel),并希望按名称在文件中搜索,并将名称和电话号码作为答案。

local FileToSearch = h:read'*a' -- 读取整个文件
var = io.read() -- 输入名称
string.gmatch(FileToSearch, ''..var..': '..'%d+') -- 搜索名称,与数字连接起来
2018-02-15 17:31:55