我想知道这段代码的行为:
str = "abcd"
print( str:find"a(bc)d" ) -- prints 1 4 bc
print( str:find"(ab)cd" ) -- prints 1 4 ab
尽管这两行都在寻找并返回不同的字符串,但它们返回相同的索引,因为它们具有相同的参考框架。换句话说,在计算索引时会忽略捕获,但随后会正常返回。
我最初的问题是关于出了什么问题,但后来我看到手册实际上表明这是正确的行为(虽然不是很清楚)。
问题是我试图根据附近的标记找到一些东西,而没有返回该标记的位置。我希望string.find
返回第一次捕获的位置,如果有的话,所以我只是用括号包裹了我想要的位置。显然,这没有帮助。我找到了一个不同的(更好的)解决方案,但我认为这并不总是可行或方便的。
有任何理由string.find
这样做吗?对用户有什么特别的好处吗?如果您对 Lua 有绝对的掌握:实际上是否没有导致严重问题的情况?