Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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
通过修改python3中的特定正则表达式来捕获重音字符_Python_Regex_Python 3.x - Fatal编程技术网

通过修改python3中的特定正则表达式来捕获重音字符

通过修改python3中的特定正则表达式来捕获重音字符,python,regex,python-3.x,Python,Regex,Python 3.x,我了解如何使用正则表达式将长电子邮件正文文本中匹配的名称和电子邮件组提取到元组中。该解决方案在提取姓名和电子邮件(例如,从以下文本中提取姓名和电子邮件)时表现出色: >开始转发消息: >日期:2013年12月20日格林尼治标准时间上午11:32:39 >主题:我的虚拟主题 >发件人:查理·布朗 >致:玛丽亚。brown@aaa.com,乔治·华盛顿= 托马斯。jefferson@aaa.com,托马斯·阿尔瓦。edison@aaa.com,胡安= ,艾伦,亚历克= 亚历杭德罗,亚历克斯,安德里亚

我了解如何使用正则表达式将长电子邮件正文文本中匹配的名称和电子邮件组提取到元组中。该解决方案在提取姓名和电子邮件(例如,从以下文本中提取姓名和电子邮件)时表现出色:

>开始转发消息:
>日期:2013年12月20日格林尼治标准时间上午11:32:39
>主题:我的虚拟主题
>发件人:查理·布朗
>致:玛丽亚。brown@aaa.com,乔治·华盛顿=
托马斯。jefferson@aaa.com,托马斯·阿尔瓦。edison@aaa.com,胡安=
,艾伦,亚历克=
亚历杭德罗,亚历克斯,安德里亚=
安德烈,安德烈=
,安德烈斯
>嗨,
>请尽快回复您的RSVP
>再见
使用这个正则表达式:

[:,]\s*=?\s*(?:([A-Z][A-Z]+(?:\s[A-Z][A-Z]+)))?\s*=?\s*([\w.]+@[\w.-]+)
生成此输出:

[(查理·布朗,'aaa@aaa.com)玛丽亚。brown@aaa.com","乔治华盛顿",george@washington.com)托马斯。jefferson@aaa.com例如,托马斯·阿尔瓦。edison@aaa.com","娟",juan@aaa.com","艾伦",alan@aaa.com","亚力克",alec@aaa.com","亚历杭德罗",aaa@aaa.com),('Alex','aaa@aaa.com),(‘安德里亚’,‘安德里亚’。mery@thomsen.cl'),(‘安德里亚’,‘安德里亚。22@aaa.com","安德烈斯",andres@aaa.com","安德烈斯",avaldivieso@aaa.com')] 
但是,我偶然发现,我传递给正则表达式的文本上的名称有特殊的重音字符。我如何更新上面的正则表达式,使其不中断,并捕获包含重音字符的名称,如:

(和他们的上级同行)

谢谢!

。我刚刚将
[a-z]+
更改为
\p{L}+
(匹配任何语言中的任何类型的字母)以捕获名称的模式

>>> s = """> Begin forwarded message:
> Date: December 20, 2013 at 11:32:39 AM GMT-3
> Subject: My dummy subject
> From: Chrálié Brown <aaa@aa-aaa.com>
> To: maria.brown@aaa.com, George Washington <george@washington.com>, =
thomas.jefferson@aaa.com, thomas.alva.edison@aaa.com, Juan =
<juan@aaa.com>, Alan <alan@aaa.com>, Alec <alec@aaa.com>, =
Alejandro <aaa@aaa.com>, Alex <aaa@planeas.com>, Andrea =
<andrea.mery@thomsen.cl>, Andrea <andrea.22@aaa.com>, Andres =
<andres@aaa.com>, Andres <avaldivieso@aaa.com>
> Hi,
> Please reply ASAP with your RSVP
> Bye"""
>>> import regex
>>> regex.findall(r'[:,]\s*=?\s*(?:([A-Z]\p{L}+(?:\s[A-Z]\p{L}+)?))?\s*=?\s*.*?([\w.]+@[\w.-]+)', s)
[('Chrálié Brown', 'aaa@aa-aaa.com'), ('', 'maria.brown@aaa.com'), ('George Washington', 'george@washington.com'), ('', 'thomas.jefferson@aaa.com'), ('', 'thomas.alva.edison@aaa.com'), ('Juan', 'juan@aaa.com'), ('Alan', 'alan@aaa.com'), ('Alec', 'alec@aaa.com'), ('Alejandro', 'aaa@aaa.com'), ('Alex', 'aaa@planeas.com'), ('Andrea', 'andrea.mery@thomsen.cl'), ('Andrea', 'andrea.22@aaa.com'), ('Andres', 'andres@aaa.com'), ('Andres', 'avaldivieso@aaa.com')]
开始转发消息: >日期:2013年12月20日格林尼治标准时间上午11:32:39 >主题:我的虚拟主题 >发件人:克雷利·布朗 >致:玛丽亚。brown@aaa.com,乔治·华盛顿= 托马斯。jefferson@aaa.com,托马斯·阿尔瓦。edison@aaa.com,胡安= ,艾伦,亚历克= 亚历杭德罗,亚历克斯,安德里亚= 安德烈,安德烈= ,安德烈斯 >嗨, >请尽快回复您的RSVP >再见 >>>导入正则表达式 >>>regex.findall(r'[:,]\s*=?\s*(?:([A-Z]\p{L}+(?:\s[A-Z]\p{L}+))))\s*=?\s*([\w.]+@[\w.-]+]),s) [('ChráliéBrown','aaa@aa-aaa.com'),('',玛丽亚。brown@aaa.com","乔治华盛顿",george@washington.com例如,托马斯。jefferson@aaa.com例如,托马斯·阿尔瓦。edison@aaa.com","娟",juan@aaa.com","艾伦",alan@aaa.com","亚力克",alec@aaa.com","亚历杭德罗",aaa@aaa.com),('Alex','aaa@planeas.com'), (“安德里亚”,“安德里亚。mery@thomsen.cl),(“安德里亚”,“安德里亚。22@aaa.com","安德烈斯",andres@aaa.com","安德烈斯",avaldivieso@aaa.com')]
会帮到你的。我在安装regex模块时很头疼,但一旦我通过了这个障碍,它就成功了,谢谢。
>>> s = """> Begin forwarded message:
> Date: December 20, 2013 at 11:32:39 AM GMT-3
> Subject: My dummy subject
> From: Chrálié Brown <aaa@aa-aaa.com>
> To: maria.brown@aaa.com, George Washington <george@washington.com>, =
thomas.jefferson@aaa.com, thomas.alva.edison@aaa.com, Juan =
<juan@aaa.com>, Alan <alan@aaa.com>, Alec <alec@aaa.com>, =
Alejandro <aaa@aaa.com>, Alex <aaa@planeas.com>, Andrea =
<andrea.mery@thomsen.cl>, Andrea <andrea.22@aaa.com>, Andres =
<andres@aaa.com>, Andres <avaldivieso@aaa.com>
> Hi,
> Please reply ASAP with your RSVP
> Bye"""
>>> import regex
>>> regex.findall(r'[:,]\s*=?\s*(?:([A-Z]\p{L}+(?:\s[A-Z]\p{L}+)?))?\s*=?\s*.*?([\w.]+@[\w.-]+)', s)
[('Chrálié Brown', 'aaa@aa-aaa.com'), ('', 'maria.brown@aaa.com'), ('George Washington', 'george@washington.com'), ('', 'thomas.jefferson@aaa.com'), ('', 'thomas.alva.edison@aaa.com'), ('Juan', 'juan@aaa.com'), ('Alan', 'alan@aaa.com'), ('Alec', 'alec@aaa.com'), ('Alejandro', 'aaa@aaa.com'), ('Alex', 'aaa@planeas.com'), ('Andrea', 'andrea.mery@thomsen.cl'), ('Andrea', 'andrea.22@aaa.com'), ('Andres', 'andres@aaa.com'), ('Andres', 'avaldivieso@aaa.com')]