Я просто пишу маленькое регулярное выражение для фильтрации электронной почты из строки.Когда я использую шаблон как patt=r'[\w.-]+@[\w.-]+'
, он работает нормально.Но когда я использую шаблон как patt1=r'[\w-.]+@[\w-.]+'
, он выдаёт мне ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 146, in search
return _compile(pattern, flags).search(string)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 251, in _compile
raise error, v # invalid expression
sre_constants.error: bad character range
Код:
1-й случай:
>>> str="hello@abc.com"
>>> patt=r'[\w.-]+@[\w.-]+'
>>> match=re.search(patt, str)
>>> match.group()
'hello@abc.com'
2-й случай:
>>> str="hello@abc.com"
>>> patt=r'[\w-.]+@[\w-.]+'
>>> match=re.search(patt, str)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 146, in search
return _compile(pattern, flags).search(string)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 251, in _compile
raise error, v # invalid expression
sre_constants.error: bad character range
Есть идеи, что я делаю не так во втором регулярном выражении?