我目前正在编写一个从网站收集信息的脚本。我想知道string.match是否能够接受正则表达式模式匹配,如下所示:
string.match(page, "(?:(Phrase One|Phrase Two|Phrase Three|...))")
问题是,我不知道是否可以做到,但我愿意尝试任何解决方案。谢谢!
答案 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()可以用于你描述的问题,它只是与正则表达式不同的语法。以下是解释:
答案 3 :(得分:0)
就gsub方法中的http://lua-users.org/wiki/StringLibraryTutorial而言。