Регулярное выражение URL Gruber в Python

Как я переписываю этот новый способ распознать, что адреса работают в Python?

\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))

5
задан Alix Axel 8 January 2010 в 04:00
поделиться

3 ответа

A ] Оригинальный источник Для этого состояния «Этот паттерн должен работать в большинстве современных реализаций Regex» и конкретно Perl. Реализация Regex Python является современным и , похожее на Perl , но отсутствует [: Punct:] класс символов. Вы можете легко построить это, используя это:

>>> import string, re
>>> pat = r'\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^%s\s]|/)))'
>>> pat = pat % re.sub(r'([-\\\]])', r'\\\1', string.punctuation)

Call () Call () вызов ускользает от определенных символов внутри набора символов по мере необходимости .

Редактировать : Использование RE.ESCAPE () работает так же, поскольку он просто прилипает к обратной косою, перед все . Что поначалу почувствовало себя грубому мне, но, безусловно, работает нормально для этого случая.

>>> pat = pat % re.escape(string.punctuation)
12
ответ дан 18 December 2019 в 08:28
поделиться

Не думаю, что у питона есть такое выражение

[:punct:]

Википедия говорит, что [:punct:] равно

[-!\"#$%&\'()*+,./:;<=>?@\\[\\\\]^_`{|}~]
5
ответ дан 18 December 2019 в 08:28
поделиться

Python не имеет POSIX-выражения в кронштейнах .

Скобкобковое выражение [:punct:] в ASCII эквивалентно

[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~] 
2
ответ дан 18 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: