这是我第一次在经过长时间的搜索后在这里询问解决方案,我想告诉你,从现在起,我一直在为我的具体案例努力寻找解决方案,或者我错过了,但至少我会为你提供你需要的所有信息。我已经找到并阅读了许多可能的方法来解决我的python正则表达式,但我只找到了用于孤立数字、字符或符号的正则表达式,而不是用于简单特定格式的整个电话号码
我将把文本的内容格式放在这里,我试图从中提取姓名、他们的电话号码和电子邮件地址(很抱歉没有格式化,但我不知道如何在代码区换行):
很多文字。。。名字1 0723-111-222email@address1.com…大量文本
很多文字。。。第二个名字2 0723-333-444…大量文本
很多文字。。。第三名3email@address3.com…大量文本
很多文字。。。第四名4 0723-777-888email@address4.com…大量文本
很多文字。。。第五名5 0723-999-000email@address5.com…大量文本
我要提取的文本序列如下First Name1 0723-111-222 email@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
因此,主要问题在于regex的(?:\d+\-\d+\-\d+)?
序列没有在输出中打印Third Name3 email@address3.com
。在缺少电话号码的情况下,我需要向正则表达式添加哪些可选内容
很抱歉这么长的描述,但我想提供足够的信息让您了解问题所在
你可以用
见regex demo
该模式基本上遵循以下逻辑:
<WORD> <WORD1> (optional_NUMBER EMAIL|NUMBER)
详细信息
\w+\s+\w+
-一个或多个单词字符、一个或多个空格以及一个或多个单词字符(两个空格分隔的“单词”)(?:
-启动非捕获组:(?:\s\d+-\d+-\d+)?\s+[A-Za-z0-9.+_*-]+@[a-z0-9.+_-]+\.[a-z]+
-可选出现空格、一个或多个数字、一个或多个数字、一个或多个数字、一个或多个空格、一个或多个字符ASCII字母、数字、.
、+
、_
、*
或-
字符、@
、一个或多个小写字母、数字、.
、^_
或-
字符、.
和一个或多个小写ASCII字母|
-或\s\d+-\d+-\d+
-空白,一个或多个数字,-
,一个或多个数字,-
,一个或多个数字)
-非捕获组的结尾注意:
\s
之后添加+
(在当前模式中并非如此)相关问题 更多 >
编程相关推荐