Lua -- 匹配包含非字母类的字符串

我正在尝试在Lua中查找包含特殊字符的字符串的精确匹配。我希望下面的例子返回它是一个精确匹配,但是由于“ -”字符,它返回了nil

index = string.find(“test-string”,“test-string”) 返回nil

index = string.find(“test-string”,“test-”) 返回1

index = string.find(“test-string”,“test”) 也返回1

我怎样才能使其完全匹配?

点赞
用户1208078
用户1208078

在模式中,需要用 % 字符转义特殊字符。

因此,在此情况下,您要查找的是

local index = string.find('test-string', 'test%-string')
2016-07-26 16:40:15
用户6509531
用户6509531

- 是 Lua 字符串模式中的一个模式操作符,所以当你输入 test-string 时,你告诉 find() 仅尽可能少地匹配字符串 test。因此,它会查找 test-string,首先发现里面有 test,然后由于此时的 - 不是实际的减号,因此它实际上正在寻找 teststring

像迈克建议的那样,用 % 字符对其进行转义。

我找到了 这篇文章,有助于更好地理解模式。

2016-07-26 16:44:52
用户107090
用户107090

你还可以请求一个忽略魔法字符的纯子字符串匹配:

string.find("test-string", "test-string",1,true)
2016-07-26 23:14:17