regex - 如果模式匹配,则从 lua 表中打印值

标签 regex lua minecraft lua-table lua-patterns

好吧,所以我最近才接触到 lua,发现自己陷入了以下困境:

我有函数 peripheral.getNames()(这是一个自定义函数)

它将返回一个具有结构键、值的表,而键始终是一个数字并从 1 开始,值将是函数找到的值(它搜索与其连接的设备)

在我的示例中,它创建了一个如下所示的表格

1 herp
2 derp
3 monitor_1
4 morederp

我可以打印以下值

local pgn = peripherals.getNames()

for key,value in pairs(pgn) do
 setCursorPos(1,key)
 write(value)
 end
end

这将在我的显示器上输出表中键的相应值,如下所示

herp
derp
monitor_1
morederp

现在,我尝试过滤我的结果,以便它只在值包含“monitor”时打印一些内容

我试着用

for key,value in pairs(pgn) do
 if string.match(value, monitor) then
 #dostuff
 end
end

但它总是返回“错误的参数:预期的字符串,没有得到” 很明显 string.match 要么不接受“值”,要么值不是字符串 所以我先尝试转换值(value)

for key,value in pairs(pgn) do
 value = tostring(value)
  if ....
 #dostuff
 end
end

还是报同样的错误

你们有没有人知道我如何让 string.match 接受“值”,或者是否有另一种方法在这个 for 循环中检查模式的“值”的内容?

最佳答案

错误消息是关于变量 monitor,它没有定义,所以有一个 nil 值。

试试 string.match(value, "monitor")

关于regex - 如果模式匹配,则从 lua 表中打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252653/

相关文章:

lua - 我们可以在redis的lua脚本中做管道吗

arrays - 修改了key但没有真正修改value?

git - 用于 Minecraft 服务器备份/版本控制的 Git 替代品

javascript - 如何在 JS 中使用 Regexp 制作\一个文字反斜杠

正则表达式 - 查找所有不以特定前缀开头的匹配词

javascript - 如何使用 JavaScript 正则表达式匹配字符串中前面有两个相同单词的单词?

regex - 如何提取R中字符之间的数字

MySQL 代理逐步配置

lua - 我如何运行像 'excavate 5'这样的computercraft程序

c++ - 与 Minecraft bukkit 服务器握手 - 发送服务器主机字段失败