1

2 種類の文字列を一致させようとしています。両方とも捕獲したいのですが、今のところ片方しか捕獲できません。

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

  return min, high;
end

入力文字列は次のとおりです10-10010

最初の文字列は期待どおりに返されますが、2 番目 (1 桁) はnil/match not found を返します。

常に変数を出力する必要があるため、パターンの 2 番目の部分が含まれているかどうかを確認したいと考えてい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 に答える