Python中使用正则表达式提取字符串中的Email地址
本文介绍如何在Python中利用re库的compile和findall方法从字符串中提取Email地址。通过定义正则表达式模式,动态赋值测试字符串,并展示去重排序后的运行结果。同时补充了其他语言如Java的提取思路,帮助开发者掌握字符串解析技巧。
Python使用正则表达式提取Email
在Python中,可以通过调用re库来实现从字符串中提取Email地址的功能。具体做法是使用compile方法编译正则表达式,再结合findall方法查找所有匹配项。
基础代码实现
import re
email=re.compile(r'[a-z0-9\-\.]+@[0-9a-z\-\.]+')
emailtest=r'adfasldfjdsl fan02@163.com'
emailset=set()
for em in email.findall(emailtest):
emailset.add(em)
for em1 in sorted(emailset):
print(em1)接下来对代码进行适当修改,以便更好地处理不同场景。
通过封装函数调用,并动态地为字符串赋值,可以灵活地测试不同的输入内容。
函数封装与动态测试
import re
def emailre(teststr):
email=re.compile(r'[a-z0-9\-\.]+@[0-9a-z\-\.]+')
emailset=set() #列表
for em in email.findall(teststr):
emailset.add(em)
for eml in sorted(emailset):
print(eml)
emailtest='sdfdsgf asd03@162.com'
emailre(emailtest)
#或
strtest=r'sdgfsg abc@163.com'
emailre(strtest)执行上述代码后,控制台将输出提取到的Email地址列表。

此外,还可以补充其他实现方式或注意事项,以完善提取逻辑。
如果需要从指定的字符串中提取Email,可以参考以下示例代码:
其他语言实现参考
/**
* 从指定的字符串中提取Email
* content 指定的字符串
*/
public static String parse(String content) {
String email = null;
if (content==null || content.length()<1) {
return email;
}
//找出含有@
int beginPos;
int i;
String token = "@";
String preHalf="";
String sufHalf = "";
beginPos = content.indexOf(token);
if (beginPos>-1) {
//前项扫描
String s = null;
i= beginPos;
while(i>0) {
s = content.substring(i-1,i);
if (isLetter(s))
preHalf = s+preHalf;
else
break;
i--;
}
//后项扫描
i= beginPos+1;
while( i<content.length()) {
s = content.substring(i,i+1);
if (isLetter(s))
sufHalf = sufHalf +s;
else
break;
i++;
}
//判断合法性
email = preHalf + "@" + sufHalf;
if (isEmail(email)) {
return email;
}
}
return null;
}
/**
* 判断是不是合法Email
* email Email地址
*/
public static boolean isEmail(String email) {
try {
if (email==null || email.length()<1 || email.length()>256) {
return false;
}
String check = "^([0-9a-zA-Z]+[_.0-9a-zA-Z-]+)@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2,3})$";
Pattern regex = Pattern.compile(check);
Matcher matcher = regex.matcher(email);
boolean isMatched = matcher.matches();
if(isMatched) {
return true;
} else {
return false;
}
} catch (RuntimeException e) {
return false;
}
}
/**
* 判断是不是合法字符
* c 要判断的字符
*/
public static boolean isLetter(String c) {
boolean result = false;
if (c==null || c.length()<0) {
return false;
}
//a-z
if (c.compareToIgnoreCase("a")>=0 && c.compareToIgnoreCase("z")<=0) {
return true;
}
//0-9
if (c.compareToIgnoreCase("0")>=0 && c.compareToIgnoreCase("9")<=0) {
return true;
}
//. - _
if (c.equals(".") || c.equals("-") || c.equals("_") ) {
return true;
}
return result;
}至此,关于Python获取字符串中Email的介绍已完成。如需了解更多相关内容,建议搜索本站过往文章或继续阅读后续章节,感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













