使用' *'和' +'在Lua模式

时间:2014-04-06 14:00:09

标签: string lua lua-patterns

i, j = string.find("the number 1298 is even", "%d+")
print(i,j)

在上面的代码中,如果我使用%d+,我会得到预期的12,15,但%d*会返回1,0。两者之间的唯一区别是*也接受0值,但+接受1或更多。但为什么它会回归1,0

1 个答案:

答案 0 :(得分:1)

首先,模式%d+匹配一个或多个数字,%d*匹配零个或多个数字,因此在您的示例中,%d+匹配"1298",而%d*匹配%d* 1}}在开头匹配一个空字符串。 +可以匹配零个数字,这是*1之间的差异。

其次,空字符串的索引01似乎有点奇怪,但它有意义。索引1表示字符串的开头,但对于空字符串的结束索引,您不能"t",因为这意味着匹配是第一个字符0 ,所以它必须小于起始索引,string.find()就是你得到的那个。

此外,string.sub (s, i, j)的返回值可以用作string.sub()的参数来获取找到的子字符串。在致电i中,如果j大于{{1}},则会返回空字符串。