使用string.find

时间:2015-02-12 22:46:19

标签: lua corona

我正在尝试编写一些代码来查看两个数据集并匹配它们(如果匹配),此时我正在使用 string.find 并且这种工作有点但非常严格。例如:它适用于 check1 但不适用于check2 / 3,因为Feed中有空格或其他单词。我想在所有3场比赛中返回一场比赛,但我该怎么办呢? (可能超过4个字符匹配?)

check1 = 'jan'
check2 = 'janAnd'
check3 = 'jan kevin'

input = 'jan is friends with kevin'

if string.find(input.. "" , check1 )  then
print("match on jan")
end

if string.find( input.. "" , check2 )  then
print("match on jan and")
end

if string.find( input.. "" , check3 )  then
print("match on jan kevin")
end

PS:我尝试了gfind,gmatch,match,但没有运气

2 个答案:

答案 0 :(得分:1)

find只进行直接匹配,因此如果您搜索的字符串不是您正在搜索的子字符串(对字符集和特殊字符进行一些模式处理),则不会匹配。

如果您对匹配示例中列出的字符串感兴趣,则需要查看模糊搜索。 This SO answer可能会有助this one。我已经实现了第二个例子中列出的算法,但是基于this algorithm的双核和三核匹配得到了更好的结果。

答案 1 :(得分:0)

Lua的string.find不仅可以使用精确的字符串,还可以使用模式。但语法与“检查”中的语法略有不同。您希望check2为"jan.+"以匹配“jan”,后跟一个或多个字符。您的第三张支票需要jan.+kevin。这里的点代表任何字符,而以下加号表示这可能是一个或多个字符的序列。 http://www.lua.org/pil/20.2.html上有更多信息。