i, j = string.find("the number 1298 is even", "%d+")
print(i,j)
在上面的代码中,如果我使用%d+
,我会得到预期的12,15
,但%d*
会返回1,0
。两者之间的唯一区别是*
也接受0值,但+
接受1或更多。但为什么它会回归1,0
?
答案 0 :(得分:1)
首先,模式%d+
匹配一个或多个数字,%d*
匹配零个或多个数字,因此在您的示例中,%d+
匹配"1298"
,而%d*
匹配%d*
1}}在开头匹配一个空字符串。 +
可以匹配零个数字,这是*
和1
之间的差异。
其次,空字符串的索引0
和1
似乎有点奇怪,但它有意义。索引1
表示字符串的开头,但对于空字符串的结束索引,您不能"t"
,因为这意味着匹配是第一个字符0
,所以它必须小于起始索引,string.find()
就是你得到的那个。
此外,string.sub (s, i, j)
的返回值可以用作string.sub()
的参数来获取找到的子字符串。在致电i
中,如果j
大于{{1}},则会返回空字符串。