python中的正则表达式:findall re.findall(r'[\w]+@+[\w.]','blahh'ggg@google.comyipee']
返回python中的正则表达式:findall re.findall(r'[\w]+@+[\w.]','blahh'ggg@google.comyipee'],python,regex,Python,Regex,返回['ggg@g'] 为什么它不返回['ggg@google.com']或至少['ggg@google“] \w+@+[\w.]+ ^^ 您未能添加量词。因此它只能在@之后获得一个字符 应该是 `re.findall(r'[\w]+@+[\w.]+','blahh ggg@google.com yipee')` 此外,如果只能有一个@,则可以删除前面的量词,使其成为\w+@[\w.]+ 输出:['ggg@google.com'] 量词:+在一次和无限次之间,尽可能多次
['ggg@g']
为什么它不返回['ggg@google.com']
或至少['ggg@google“]
\w+@+[\w.]+
^^
您未能添加量词。因此它只能在@
之后获得一个字符
应该是
`re.findall(r'[\w]+@+[\w.]+','blahh ggg@google.com yipee')`
此外,如果只能有一个@
,则可以删除前面的量词,使其成为\w+@[\w.]+
输出:['ggg@google.com']
量词:+在一次和无限次之间,尽可能多次,根据需要回馈[贪婪]
量词:*在零次和无限次之间,尽可能多次,根据需要回馈[贪婪]
在[\w]+[\w.]
中,您只需检查@
后面的单个字符。
这就是为什么它只是在@
之后比较g
,然后停止。
必须使用*
或+
检查单词在@
之后的多次出现情况
*= Zero or more occurrences Ex. ggg@google,com, ggg@
+=One or more occurrences Ex ggg@g, ggg@googlw.com
re.findall(r'[\w]+@+[\w.]','blahh'ggg@google.comyipee')
,让我们将其分解:
首先,[\w]
将匹配任何字母数字字符,因此,它将匹配除空格和“@”之外的所有字符
然后,[\w]+
将匹配一个或多个连续的字母数字字符,这样我们就剩下了blahh
、ggg
、google
、com
和yipee
现在,[\w]+@
将在先前的匹配之后匹配一个“@”,但只有ggg
紧跟其后有一个“@”字符,因此只有ggg@
匹配
同样,[\w]++
将一次或多次匹配“@”,因为在ggg
之后只有一个“@”,所以之前的匹配保持不变,即ggg@
接下来我们有[\w]+[\w.]
意味着匹配后可以有一个字母数字字符或一个文字
,ggg@
在它之后有g
,因此它被选中进行匹配ggg@g
所以,最后我们得到[ggg@g
]作为结果
打印['ggg@google.com']
试试这个:
re.findall(r'\w+@\w+\.\w+','blahh ggg@google.com yipee')