这将起作用:>>> regexp = r"[\w\.]+@(\w+)(\.\w+)?(\.\w+)?(\.\w+)?(\.\w+)?(\.\w+)?">>> email_address = "william.adama@galactica.caprica.fleet.mil">>> m = re.match(regexp, email_address)>>> m.groups()('galactica', '.caprica', '.fleet', '.mil', None, None)
但它仅限于最多六个子组。更好的办法是:>>> m = re.match(r"[\w\.]+@(.+)", email_address)>>> m.groups()('galactica.caprica.fleet.mil',)>>> m.group(1).split('.')['galactica', 'caprica', 'fleet', 'mil']
请注意,只要电子邮件地址很简单,regexp就可以了-但是有各种各样的东西会被破坏。看见这个问题有关电子邮件地址正则表达式的详细处理。