Аналог соответствия PHP preg в 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 я не могу найти аналогичную функцию.

Author: Gumbo, 2012-01-30

3 answers

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

Взгляните на повторный поиск и повторный поиск.

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

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

 14
Author: RanRag, 2017-05-23 12:30:29

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

 2
Author: Tudor Constantin, 2012-01-30 09:40:28

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

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

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

output = re.search('(?s)a class="title"(.*?)<\/a>', input, flags=re.IGNORECASE)
    if output is not None:
        output = output.group(0)
        print(output)
 1
Author: Васин Юрий, 2016-07-22 07:19:55