mil*_*ile 4 string lua string-matching lua-patterns
不确定如何检查单词是否作为字符串中的整个单词出现,而不是单词的一部分,区分大小写.例如:
Play 是字符串
Info Playlist Play pause
Run Code Online (Sandbox Code Playgroud)
但不在字符串中
Info Playlist pause
Info NowPlay pause
Run Code Online (Sandbox Code Playgroud)
由于\bLua中没有通常的单词边界,因此可以使用前沿模式 %f.%f[%a]匹配转换为字母并%f[%A]匹配相反的转换.
%f[set],一种前沿模式 ; 这样的项匹配任何位置的空字符串,使得下一个字符属于set,而前一个字符不属于set.集合集如前所述进行解释.主题的开头和结尾都被视为角色\0.
您可以使用以下ContainsWholeWord功能:
function ContainsWholeWord(input, word)
return string.find(input, "%f[%a]" .. word .. "%f[%A]")
end
print(ContainsWholeWord("Info Playlist pause","Play") ~= nil)
print(ContainsWholeWord("Info Play List pause","Play") ~= nil)
Run Code Online (Sandbox Code Playgroud)
请参阅IDEONE演示
要完全模拟\b行为,您可以使用
"%f[%w_]" .. word .. "%f[^%w_]"
Run Code Online (Sandbox Code Playgroud)
模式,\b匹配之间的位置:
[a-zA-Z0-9_])字符.[a-zA-Z0-9_])字符.[a-zA-Z0-9_]),另一个不是单词字符([^a-zA-Z0-9_]).请注意,%wLua模式不同,\w因为它只匹配字母和数字,但不匹配下划线.