我正在尝试编写一些代码来查看两个数据集并匹配它们(如果匹配),此时我正在使用 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,但没有运气
答案 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上有更多信息。