使用 string.find 进行翻译。

我正在尝试编写一些代码,查看两个数据集并匹配它们(如果匹配)。目前我正在使用string.find,这种方法有点用,但非常死板。例如:它可以在检查1上运行,但不能在检查2/3上运行,因为提要中有一个空格或其他单词。我想在所有三个上返回匹配,但该如何做?(通过超过4个字符进行匹配,也许?)

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

input = 'jan is friends with kevin'

if string.find(input.. "" , check1 )  then
print("匹配jan")
end

if string.find( input.. "" , check2 )  then
print("匹配jan and")
end

if string.find( input.. "" , check3 )  then
print("匹配jan kevin")
end

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

点赞
用户1442917
用户1442917

find 只能进行直接匹配,所以如果你要搜索的字符串不是你要搜索的子字符串(带有某些字符集和特殊字符的模式处理),你将无法匹配。

如果你想匹配那些你在示例中列出的字符串,你需要查看模糊搜索。这个 SO 回答 可能会有所帮助,以及 这个回答。我实现了第二个示例中列出的算法,但是使用基于 这个算法 的二元组和三元组匹配获得了更好的结果。

2015-02-12 23:27:10
用户2757903
用户2757903

Lua 的 string.find 不仅适用于精确字符串,还适用于模式。但语法与您的“检查”有些不同。你需要将 check2 设为 "jan.+",以匹配 "jan" 后跟一个或多个字符。您的第三个检查将需要jan.+kevin。这里的点代表任何一个字符,而接下来的加号表示这可能是一个或多个字符的序列。更多信息请参见 http://www.lua.org/pil/20.2.html

2016-03-30 00:07:33