1

我正在尝试匹配两种类型的字符串。我想把他们两个都抓起来,但到目前为止我只能抓到一个。

function roll(input)
  min, high = string.match(input, '(%d+)-(%d+)');

  return min, high;
end

输入字符串是:10-10010

我的第一个字符串按预期返回,但我的第二个(单个数字)返回nil/match not found。

我想检查是否包含模式的第二部分,因为它应该总是打印出我的min变量。

4

1 回答 1

2

最简单的方法是分开做:

function roll(input)
  local min,high = string.match(input, '(%d+)-(%d+)')
  if min == nil then 
    min = string.match(input, '(%d+)')
  end
  return min, high
end

print(roll '10')
print(roll '10-100')
于 2014-04-17T04:04:39.660 回答