如何在python中使用正则表达式匹配可选的完整电话号码
这是我第一次在经过长时间的搜索后在这里询问解决方案,我想告诉你,从现在起,我一直在为我的具体案例努力寻找解决方案,或者我错过了,但至少我会为你提供你需要的所有信息。我已经找到并阅读了许多可能的方法来解决我的python正则表达式,但我只找到了用于孤立数字、字符或符号的正则表达式,而不是用于简单特定格式的整个电话号码 我将把文本的内容格式放在这里,我试图从中提取姓名、他们的电话号码和电子邮件地址(很抱歉没有格式化,但我不知道如何在代码区换行): 很多文字。。。名字1 0723-111-222email@address1.com…大量文本如何在python中使用正则表达式匹配可选的完整电话号码,python,regex,Python,Regex,这是我第一次在经过长时间的搜索后在这里询问解决方案,我想告诉你,从现在起,我一直在为我的具体案例努力寻找解决方案,或者我错过了,但至少我会为你提供你需要的所有信息。我已经找到并阅读了许多可能的方法来解决我的python正则表达式,但我只找到了用于孤立数字、字符或符号的正则表达式,而不是用于简单特定格式的整个电话号码 我将把文本的内容格式放在这里,我试图从中提取姓名、他们的电话号码和电子邮件地址(很抱歉没有格式化,但我不知道如何在代码区换行): 很多文字。。。名字1 0723-111-222ema
很多文字。。。第二个名字2 0723-333-444…大量文本
很多文字。。。第三名3email@address3.com…大量文本
很多文字。。。第四名4 0723-777-888email@address4.com…大量文本
很多文字。。。第五名5 0723-999-000email@address5.com…大量文本 我想提取的文本序列如下
First Name1 0723-111-222email@address1.com
等等。现在我有一个正则表达式,它实际上成功地实现了这一点,但有一个例外。正如您在上面的文本示例中所看到的,我还有一个字符串没有电子邮件地址,另一个字符串没有电话号码。因此,成功提取了没有电子邮件地址的字符串,但没有提取缺少电话号码的字符串,并且脚本输出中没有打印
我运行的正则表达式是这样的,我很快就能得到我想要的:
“\w+s?\w+s?\w++\s\w++\s(?:\d+\-\d+\-\d+)\s(?[A-Za-z0-9\.-++\.*]+[A-z0-9\.-+++\.[A-z]+)”
运行脚本后,输出如下所示:
名字1 0723-111-222email@address1.com第二个名字2 0723-333-444
第四名4 0723-777-888email@address4.com
第五名5 0723-999-000email@address5.com 因此,主要问题是正则表达式的
(?:\d+\-\d+\-\d+)
序列没有打印第三个名称3email@address3.com
在输出中。在缺少电话号码的情况下,我需要向正则表达式添加哪些可选内容
抱歉,我的描述太长,但我想提供足够的信息让您了解问题所在您可以使用
\w+\s+\w+(?:(?:\s\d+-\d+-\d+)\s+[A-Za-z0-9.+\u*-]+@[A-z0-9.+\u-]+\.[A-z]+\s\d+-\d+-\d+]
看
该模式基本上遵循以下逻辑:(可选的电子邮件号码)
细节
-一个或多个单词字符、一个或多个空格以及一个或多个单词字符(两个空格分隔的“单词”)\w+\s+\w+
-启动非捕获组:(?:
-可选出现空格、一个或多个数字、(?:\s\d+-\d+-\d+)\s+[A-Za-z0-9.+\*-]+@[A-z0-9.+\[[A-z]+
、一个或多个数字、-
、一个或多个数字,然后出现一个或多个空格、一个或多个字符ASCII字母、数字、-
、
、+
或*
字符、-
、一个或多个ASCII小写字母l字母、数字、
、
、+
或
字符、-
和一个或多个小写ASCII字母
-或|
-空白,一个或多个数字,\s\d+-\d+-\d+
,一个或多个数字,-
,一个或多个数字-
-非捕获组结束)
- 要匹配一个或多个空白,请始终在
之后添加\s
(当前模式中不是这种情况)+
- 电子邮件匹配模式可能需要进一步微调,请参阅