gpt4 book ai didi

python - 更改模式顺序时正则表达式搜索不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:54 25 4
gpt4 key购买 nike

我只是在写一个小的正则表达式来从字符串中过滤电子邮件。当我将模式用作 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

代码:

第一种情况:

>>> str = "hello@abc.com"
>>> patt = r'[\w.-]+@[\w.-]+'
>>> match = re.search(patt, str)
>>> match.group()
'hello@abc.com'

第二种情况:

>>> 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

知道我在第二个正则表达式中做错了什么吗?

最佳答案

连字符 - 必须是列表中的第一个或最后一个。当用在两个字符之间表示范围时,它们具有特殊含义,例如 [A-Z](全部大写字母)。连字符位于结尾或开头时,没有特殊含义。

此外,转义它 \- 将在 Python 中工作,但要注意它可能不适用于其他实现/语言。

在此处查看已接受的答案:Regex - Should hyphens be escaped?

与您的问题不完全相同,但涉及相似的信息。

关于python - 更改模式顺序时正则表达式搜索不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54849664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com