【问题标题】:Matching variable string with Lua用 Lua 匹配变量字符串
【发布时间】:2021-06-11 01:50:44
【问题描述】:

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

/home/data_x99999999_abc_def_0.sh 

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

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

【问题讨论】:

  • 这与您之前的问题非常相似,您可能应该使用这些详细信息编辑他们之前的问题。 "_(x%d+)_"

标签: regex lua match openresty


【解决方案1】:

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

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

你的代码

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

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

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

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

【讨论】:

  • 谢谢。是的,我想确切地告诉你。我正在尝试编写干净的代码
猜你喜欢
  • 2020-04-06
  • 2015-12-22
  • 2021-10-03
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 2022-01-26
  • 2018-03-11
  • 2021-06-07
相关资源
最近更新 更多