用 Lua 匹配变量字符串

Matching variable string with Lua

我正在与文件搜索脚本作斗争
x99999999 值是连续可变的。如何找到与 lua 匹配的值?
我需要找到并更改此变量。

/home/data_x99999999_abc_def_0.sh 

我确实有有效的代码,但我不确定它是否是正确的正则表达式。

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

I'm not sure it's a correct regex.

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)