Ответ 1
исходный источник, в котором говорится: "Этот шаблон должен работать в большинстве современных реализаций регулярных выражений" и, в частности, Perl. Реджикс-реализация 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)
Вызов re.sub()
позволяет избежать определенных символов внутри набора символов по мере необходимости.
Изменить. Использование re.escape() работает так же хорошо, поскольку оно просто обращается к косой черте перед всем. Сначала это показалось мне грубым, но, безусловно, отлично подходит для этого случая.
>>> pat = pat % re.escape(string.punctuation)