微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用 Lua 匹配变量字符串

如何解决用 Lua 匹配变量字符串

我正在处理文件搜索脚本
x99999999 值是连续可变的。如何通过 lua 匹配找到这个值?
我需要找到并更改此变量。

/home/data_x99999999_abc_def_0.sh 

我实际上有可以工作的代码,但我不确定它是否是正确的正则表达式。

local newpath = s:gsub("(_x)[^_]*(_)","_static_")

解决方法

我不确定它是否是正确的正则表达式。

Lua 模式不是正则表达式。与正则表达式相比,Lua 的字符串模式具有不同的语法并且更加有限。

您的代码

local newpath = s:gsub("(_x)[^_]*(_)","_static_")

"_x" 后跟 0 个或多个非下划线字符后跟 "_" 替换为 "_static_"

这是正确的,但不是很优雅。

  1. 捕获 () 不是必需的,因为您不使用它们。所以 "_x[^_]*_" 会达到同样的效果。
  2. 如果您知道只有 x12345678 部分发生变化并且 x 之后只有数字,您可以简单地使用 "x%d+" 并用 "static" 替换它。这匹配 "x" 后跟 1 个或多个数字。或者您包括下划线。
  3. 如果您只想匹配 8 位数字,您可以使用 "%d%d%d%d%d%d%d%d"string.rep("%d",8)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。