为什么这个Lua代码返回一个索引?

时间:2014-10-02 22:30:21

标签: string lua match

我发现这个Lua在answer中由lhf找到了另一个字符串(haystack)中找到最后一个字符串(针)的索引的问题....

function findLast(haystack, needle)
  local i=haystack:match(".*"..needle.."()")
  if i==nil then return nil else return i-1 end
end
s='my.string.here.'
print(findLast(s,"%."))
print(findLast(s,"e"))

您认为我很高兴能找到我想要的原始问题的答案,但我担心我不仅知道答案有效(而且它确实有用)我试过的所有输入但是为什么它起作用;-)

麻烦的是我找不到任何Lua文档来说明s的行为:匹配在捕获没有定义模式时返回字符串中的索引。

有人能指出我的方向,确认这是定义和预期的行为,而不仅仅是它碰巧工作的巧合吗?

1 个答案:

答案 0 :(得分:2)

这是在手册中。关于Patterns

的部分
  

作为特殊情况,空capture()捕获当前字符串位置(数字)。例如,如果我们在字符串“flaaap”上应用模式“()aa()”,则会有两个捕获:3和5.