string.match и regex в Lua, это возможно? - PullRequest
2 голосов
/ 13 июня 2011

В настоящее время я работаю над сценарием, собирающим информацию с веб-сайта. Мне интересно, сможет ли string.match принять сопоставление с регулярным выражением, например:

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

Проблема в том, что я не знаю, можно ли это сделать, но я готов попробовать любые решения. Спасибо!

Ответы [ 4 ]

3 голосов
/ 13 июня 2011

Вы можете использовать Lrexlib , если вам нужны полноценные регулярные выражения.

3 голосов
/ 14 июня 2011

Что вы можете сделать, это определить функцию, которая принимает ваши шаблоны в виде таблицы, а затем возвращает таблицу соответствий, или если вам нужно только знать, содержится ли текст на странице, будет работать следующее.

    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 голосов
/ 14 июня 2011

Lua не поставляется со встроенными регулярными выражениями, но для этого есть пара дополнительных модулей.Вот один из них: http://www.inf.puc -rio.br / ~ roberto / lpeg / re.html

Тем не менее, gmatch () может использоваться для описываемой проблемы, это просто другаясинтаксис, чем регулярные выражения.Вот объяснения:

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

http://www.wowpedia.org/Pattern_matching

0 голосов
/ 13 июня 2011

Насколько http://lua -users.org / wiki / StringLibraryTutorial указывает в методе gsub.

...