regex - Lua string.match 使用不规则正则表达式?

标签 regex lua

我很好奇为什么这不起作用,并且需要知道为什么/如何解决它;我试图检测某些输入是否是一个问题,我很确定 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/

相关文章:

c++ - 如何匹配环境不同的两个群体? C++

xml - 用于解析 XML 的 Lua 库/代码

regex - 在 Lua 中使用正则表达式查找前导星号

java - 如果我正在为 Android 开发,什么是好的脚本语言?

path - Lua 需要完整路径名的函数

regex - 按正则表达式过滤示例

javascript - 正则表达式删除字母数字但保留 Javascript 中的括号和空格

regex - 从 r 中的字符串中提取时间

loops - Lua 尾调用 vs 循环

python - 正则表达式匹配所有注释//,/* */