Domanda

Execution of the code is here on eval.in

sMessage = "<hjpotter92> +help|"
local _, _, sCmd, sData = sMessage:find( "%b<>%s[%+%-%*%/%!%#%?](%w+)%s?(.*)|" )
print( _, sData, sCmd  )

The output of print says the my sData is a value with empty string.

Why is this value not nil? I created an entire project based on sData being nil for such a case, and I find that it is not so.


I've resolved the trouble by using this block

if sData:len() == 0 then 
    sData = nil 
end

So, I'm not seeking a solution to make this work. I'm just asking, why is it not a nil value?

È stato utile?

Soluzione

Why it should be nil?
You are getting successful match of pattern .* with empty string.
nil means "no match found".
example

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top