Lua中的string.match和regex,有可能吗?

时间:2011-06-13 18:56:22

标签: regex lua pattern-matching

我目前正在编写一个从网站收集信息的脚本。我想知道string.match是否能够接受正则表达式模式匹配,如下所示:

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

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

你可以做的是定义一个函数,它将你的模式作为一个表,然后返回一个匹配表,或者如果你只需要知道文本是否包含在页面中,那么下面的工作就可以了。

    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

答案 2 :(得分:2)

Lua并没有内置正则表达式,但有一些附加模块。这是一个:http://www.inf.puc-rio.br/~roberto/lpeg/re.html

也就是说,gmatch()可以用于你描述的问题,它只是与正则表达式不同的语法。以下是解释:

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

http://www.wowpedia.org/Pattern_matching

答案 3 :(得分:0)