Intereting Posts
Обнаружение мобильного или настольного браузера и перенаправление на соответствующую веб-страницу Undefined Offset 0, как я могу установить этот массив PHP, реализующий Ciphertext Stealing (CTS) с CBC Activerecord-association: создать новый объект (найти класс) Откуда берется значение по умолчанию mb_internal_encoding ()? Расширение PHP, загруженное в командной строке (cli), но не загруженное apache Периодически обновлять копию базы данных MySQL MySQL – NULL безопасный НЕ равный оператор mysqli_real_escape_string () ожидает, что параметр 1 будет mysqli, boolean заданный набор Просмотр сетки с использованием javascript или PHP Как использовать соединение SQL Server в Laravel? mod rewrite и строки запроса Вывод исходного потока изображения, а не jpeg, изменение размера изображения Вставить автоматически увеличивающийся идентификатор с помощью подготовленных операторов PHP PDO Bit (1) возвращает неверный тип данных

Совместимость с PHP preg_match в 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 я не могу найти подобную функцию.

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

Взгляните на re.findall и re.search .

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

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

Вам может быть интересно узнать о регулярных операциях выражения 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)