问题描述
我正在处理文件搜索脚本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_"
这是正确的,但不是很优雅。
- 捕获
()
不是必需的,因为您不使用它们。所以"_x[^_]*_"
会达到同样的效果。 - 如果您知道只有 x12345678 部分发生变化并且 x 之后只有数字,您可以简单地使用
"x%d+"
并用"static"
替换它。这匹配"x"
后跟 1 个或多个数字。或者您包括下划线。 - 如果您只想匹配 8 位数字,您可以使用
"%d%d%d%d%d%d%d%d"
或string.rep("%d",8)