Lua - 包含非字母类的匹配字符串
问题描述:
我试图在Lua中查找包含特殊字符的字符串的精确匹配。我想下面的例子返回,这是完全匹配,但由于-
字符返回nil
Lua - 包含非字母类的匹配字符串
index = string.find("test-string", "test-string")
返回nil
index = string.find("test-string", "test-")
返回1
index = string.find("test-string", "test")
也返回1
我怎样才能做到完全匹配?
答
您还可以要求忽略魔法字符的纯字符串匹配:
string.find("test-string", "test-string",1,true)
答
您需要转义%
字符的模式中的特殊字符。
所以在这种情况下,你正在寻找
local index = string.find('test-string', 'test%-string')
答
-
是一个Lua字符串模式的模式操作,所以当你说test-string
,你告诉find()
到test
的几次为匹配字符串可能。那么会发生什么呢看起来是test-string
,看到test
那里,并且因为-
在这种情况下不是实际的减号,所以它真的在寻找teststring
。
照迈克的话说,并用%
这个角色逃跑。我发现有助于更好地理解模式。
+0
这很有帮助,你有什么建议可以在字符串中找到这些特殊字符,并用它们自己和'%'替换它们?也许使用'string.gsub'? – wprins
在我的情况下,这是最好的答案。这是因为第二个“测试字符串”实际上是用户输入的,所以我需要检查完全匹配。 – wprins