2

我正在解析 diff3 命令的输出,有些行如下所示:

1:1,2c
2:0a

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

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

Lua 中最简单的等价物是什么?由于可选的第二个数字,我无法将该正则表达式的直接翻译传递给 string.match。

4

2 回答 2

4

使用 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
于 2014-09-17T03:46:53.740 回答
2

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

local num = str:match '^%d+:(%d+),%d+[ac]$' or str:match '^%d+:(%d+)[ac]$'
于 2014-09-17T03:46:06.693 回答