Lua中的string.match和正则表达式,是否可以使用?

我正在编写一个从网站中获取信息的脚本。我想知道string.match是否能够接受正则表达式模式匹配,例如以下内容:

string.match(page, "(?:(Phrase One|Phrase Two|Phrase Three|...))")

问题在于,我不知道是否可以做到,但我愿意尝试任何解决方案。谢谢!

原文链接 https://stackoverflow.com/questions/6334876

点赞
stackoverflow用户462604
stackoverflow用户462604

根据 http://lua-users.org/wiki/StringLibraryTutorial 中的 gsub 方法所示:

2011-06-13 18:57:53
stackoverflow用户151501
stackoverflow用户151501

如果你需要完整的正则表达式,可以使用Lrexlib

2011-06-13 19:00:36
stackoverflow用户438753
stackoverflow用户438753

你可以定义一个函数,该函数将您的模式作为表传入,然后返回匹配表,如果您只需要知道文本是否包含在页面中,则以下代码将起作用。

function FindAny(strContent, tblPatterns)
    bReturn = false
    for i, strPattern in ipairs(tblPatterns) do
        if (string.find(strContent, strPattern) ~= nil) then
            bReturn = true
            break
        end
    end
    return bReturn
end

if FindAny('pattern 4', {'pattern 1', 'pattern 2', 'pattern 3', 'pattern 4'}) then
    print('Pattern Found')
end
2011-06-14 10:45:40
stackoverflow用户686008
stackoverflow用户686008

Lua 没有内置正则表达式,但有一些插件模块可以使用。这是其中一个:http://www.inf.puc-rio.br/~roberto/lpeg/re.html

话虽如此,gmatch() 可以用于您描述的问题,只是语法与正则表达式不同。以下是解释:

http://lua-users.org/wiki/StringLibraryTutorial

http://www.wowpedia.org/Pattern_matching

2011-06-14 11:35:49