正则表达式匹配两个组中的一个

时间:2015-03-31 09:20:26

标签: python regex

我想执行操作,例如从两个中选择任何一个合适的组 例如:

gmail.com|gmail.co.in 

这给了我直接的结果但是如何为python编写正则表达式以映射上述情况的电子邮件ID。 注意。我只想在点或最多两组点和2个字符后映射3个字符

我尝试将正则表达式写成:

[\w]+\.?[\w]{3}|[[\w]{2}\.?]{2}

但不会给我预期的结果

如果尝试使用()返回组,例如:abcd@gmail.com将返回gmail.com,但需要检索整个电子邮件地址。

3 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式:

\w+@\w+\.((\w{3})|(\w{2}\.\w{2}))

Demo

这里你需要的只是第一部分为\w+@\w+\.然后你只需要玩分组和管道。所以下面的模式:

((\w{3})|(\w{2}\.\w{2}))

将匹配包含3个字符的字符串或(\w{2}\.\w{2})表示带有2个字符的字符串,然后点击带有2个字符的字符串。

答案 1 :(得分:0)

希望这有帮助。

>>> import re
>>> y = re.search('(?P<user>\w+)@(?P<domain>[\w.]+)', 'abc@gmail.com')
>>> print y.group("user"), y.group("domain")
abc gmail.com
>>> y = re.search('(?P<user>\w+)@(?P<domain>[\w.]+)', 'abc@gmail.co.in')
>>> print y.group("user"), y.group("domain")
abc gmail.co.in
>>>

答案 2 :(得分:0)

我希望这可以帮到你。

email = 'abc@gmail.com'
user = email.split('@')[0]
domain = email.split('@')[1]