Аналог прег-матча PHP в Python

Я планирую переместить один из моих скребков на Python. Мне удобно использовать preg_match и preg_match_all в PHP. Я не нахожу подходящую функцию в Python, похожую на preg_match. Кто-нибудь может мне в этом помочь?

например, если я хочу получить содержимое между <a class="title" и </a>, я использую следующую функцию в PHP:

preg_match_all('/a class="title"(.*?)</a>/si',$input,$output);

тогда как в Python я не могу понять аналогичную функцию.

3 ответов


вы ищете python в модуль re.

посмотри re.метод findAll и re.поиск.

и, как вы упомянули, вы пытаетесь проанализировать использование html html parsers для этого. Есть несколько вариантов, доступных в python, как библиотека lxml или BeautifulSoup.

взгляните на это почему вы не должны анализировать html с помощью regex


вам может быть интересно прочитать о Операции Регулярного Выражения Python


Я думаю, тебе нужно что-то вроде этого:

output = re.search('a class="title"(.*?)<\/a>', input, flags=re.IGNORECASE)
    if output is not None:
        output = output.group(0)
        print(output)

можно добавить (?s) в начале регулярного выражения для включения многострочного режима:

output = re.search('(?s)a class="title"(.*?)<\/a>', input, flags=re.IGNORECASE)
    if output is not None:
        output = output.group(0)
        print(output)