题
我如何重写这个新的方式来识别工作地址在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)
其他提示
不隶属于 StackOverflow