Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的正则表达式:findall re.findall(r'[\w]+@+[\w.]','blahh'ggg@google.comyipee']_Python_Regex - Fatal编程技术网

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