我很好奇为什么这不起作用,并且需要知道为什么/如何解决它;我试图检测某些输入是否是一个问题,我很确定 string.match 是我需要的,但是:print(string.match("how much wood?", "(how|who|what|where|why|when).*\\?"))
返回零。我是 pretty sure Lua's string.match uses regular expressions在字符串中查找匹配项,因为我之前成功使用了通配符 (.),但也许我不了解所有机制? Lua 是否需要在其字符串函数中使用特殊分隔符?我已经测试了我的正则表达式 here ,所以如果Lua使用正则表达式,上面的代码好像会返回"how much wood?"
.
你们中的任何人都可以告诉我我做错了什么,我的意思是做什么,或者给我一个很好的引用,我可以在那里获得关于 Lua 的字符串操作函数如何利用正则表达式的全面信息?
最佳答案
Lua 不使用正则表达式。 Lua 使用 Patterns ,看起来相似但匹配不同的输入。.*
也会消耗最后的 ?
输入,因此它在 \\?
上失败.应该排除问号。特殊字符用 %
转义.
"how[^?]*%?"
正如 Omri Barel 所说,没有交替运算符。您可能需要使用多个模式,一个用于句子开头的每个替代词。或者您可以使用支持正则表达式之类的库。
关于regex - Lua string.match 使用不规则正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7138189/