如何匹配用连字符分隔的单个数字和数字与string.match?

时间:2014-04-17 03:11:01

标签: string lua lua-patterns

我正在尝试匹配两种类型的字符串。我希望捕获它们,但到目前为止我只能捕获一个。

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

  return min, high;
end

输入字符串为:10-10010

我的第一个字符串按预期返回,但我的第二个字符串(单个数字)返回nil /匹配未找到。

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

1 个答案:

答案 0 :(得分: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')