匹配Lua模式中的可选数字



我正在分析diff3命令的输出,其中一些行如下所示:

1:1,2c
2:0a

我对在中间的数字感兴趣。它要么是一个数字,要么是一对用逗号分隔的数字。使用正则表达式,我可以像这样捕获它们:

/^d+:(d+)(?:,(d+))?[ac]$/

Lua中最简单的等价物是什么?由于可选的第二个数字,我无法将regex直接转换为string.match。

使用lua模式,可以使用以下内容:

^%d+:(%d+),?(%d*)[ac]$

示例:

local n,m = string.match("1:2,3c", "^%d+:(%d+),?(%d*)[ac]$")
print(n,m) --> 2    3
local n,m = string.match("2:0a", "^%d+:(%d+),?(%d*)[ac]$")
print(n,m) --> 0

您也可以使用lua模式来实现它:

local num = str:match '^%d+:(%d+),%d+[ac]$' or str:match '^%d+:(%d+)[ac]$'

相关内容

  • 没有找到相关文章

最新更新