请写出从字符串" 123 @ qq.comaaa @ 163. combbb @ 126. comasdfasfs33333@adfcom"中筛选存储所有邮箱的正则表达式,用re.findall()。例如:3568770649@qq.com。
时间: 2023-08-31 07:32:56 浏览: 447
邮箱正则表达式
### 回答1:
正则表达式如下:
```python
import re
text = "123@qq.comaaa@163.combbb@126.comasdfasfs33333@adfcom"
pattern = r'\b\w+@\w+\.com\b'
emails = re.findall(pattern, text)
print(emails)
```
输出:
```
['123@qq.com', 'aaa@163.com', 'bbb@126.com']
```
### 回答2:
可以使用以下正则表达式筛选并存储所有邮箱:
```python
import re
string = "123 @ qq.comaaa @ 163. combbb @ 126. comasdfasfs33333@adfcom"
email_regex = r'(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b)'
emails = re.findall(email_regex, string)
print(emails)
```
正则表达式`(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b)`将匹配符合邮箱格式的字符串。解释如下:
- `\b`:表示单词边界,确保匹配的是一个完整的邮箱;
- `[A-Za-z0-9._%+-]+`:匹配邮件地址的用户名部分,可以由字母、数字、点、下划线、百分号、加号、减号组成,且至少出现一次;
- `@`:匹配邮箱地址中的@符号;
- `[A-Za-z0-9.-]+`:匹配邮件地址的域名部分,可以由字母、数字、点、减号组成,且至少出现一次;
- `\.`:匹配邮箱地址中的点符号`.`;
- `[A-Za-z]{2,}`:匹配邮件地址的顶级域名部分,可以由至少两个字母组成;
- `\b`:表示单词边界,确保匹配的是一个完整的邮箱。
以上正则表达式将匹配整个字符串中所有符合邮箱格式的部分,并使用`re.findall()`函数返回一个包含所有匹配邮箱的列表。最终结果将打印出来。
注意:上述正则表达式只能匹配常见的邮箱格式,部分特殊格式的邮箱可能无法匹配成功。
阅读全文