我试图用pdfminer和正则表达式从简历中提取电子邮件
from io import StringIO
from pdfminer3.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer3.converter import TextConverter
from pdfminer3.layout import LAParams
from pdfminer3.pdfpage import PDFPage
import re
def get_cv_email(self, cv_path):
pagenums = set()
output = StringIO()
manager = PDFResourceManager()
converter = TextConverter(manager, output, laparams=LAParams())
interpreter = PDFPageInterpreter(manager, converter)
infile = open(cv_path, 'rb')
for page in PDFPage.get_pages(infile, pagenums):
interpreter.process_page(page)
infile.close()
converter.close()
text = output.getvalue()
output.close()
match = re.search(r'[\w\.-]+@[\w\.-]+', text)
email = match.group(0)
return email
大部分简历的邮件都被成功地提取出来了,但并不是一直都能正常工作
示例:jayannathanthcdh@gmail.com教育资格认证在
更新:如果电子邮件以大写字母开头,我如何编辑正则表达式以忽略电子邮件后面的内容
试试这个:
\w+(?:[.-]\w+)*@\w+(?:[.-]\w+)+[.-][a-z_0-9]+(?=[A-Z]|(?!=[.-])\b)
只要邮件的最后一部分是小写,它就可以工作。它将匹配,直到后跟大写字母或单词边界。在
此外,regex应该更精确地使用破折号和圆点,从而处理不应该有效的内容,如
a-.@foo a
等你有一个演示here
根据您在匹配电子邮件时匹配的最后一条注释,直到它在
@
后找到一个大写字母,您可以使用以下正则表达式:举个例子:
^{pr2}$相关问题 更多 >
编程相关推荐