为什么`sData`是非空值?

代码的执行结果在 此处

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

print 函数的输出显示,sData 是一个空字符串。

为什么它不是 nil 值? 我基于 sDatanil 的情况创建了整个项目,但我发现事实并非如此。


我通过以下代码段解决了问题

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

所以,我不是在寻找解决方案,而只是在问,为什么它不是 nil 值?

点赞
用户1847592
用户1847592

为什么应该是 nil?

你用空字符串成功匹配了 .* 的模式。

nil 意味着 "没有找到匹配项"。

示例

2013-04-09 08:53:34