我如何重写这个新的方式来识别工作地址在Python?

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

有帮助吗?

解决方案

原始源为状态“这图案应在最现代化的regex实现工作”和特别是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)

其他提示

我不认为有蟒这个表达式

[:punct:]

维基[:punct:]是相同于

[-!\"#$%&\'()*+,./:;<=>?@\\[\\\\]^_`{|}~]

Python不具有 POSIX括号表达式

[:punct:]括号表达式是等效于ASCII到

[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~] 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top