Domanda

I'm trying to match for two types of strings. I wish to capture both of them, but I can only capture one so far.

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

  return min, high;
end

The input strings are: 10-100 and 10

My first string returns as expected but my second (the single digit) returns nil/match not found.

I wish to check if the second part of the pattern is included or not, as it should always print out my min variable.

È stato utile?

Soluzione

Easiest is to do it separately:

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')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top