Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Regular Expressions in Python Introduction to Regular Expressions Email Groups

Jacqueline Bolt
.a{fill-rule:evenodd;}techdegree seal-36
Jacqueline Bolt
Python Development Techdegree Graduate 45,360 Points

Always returning an empty object when more than one group

Every which way I try this regex, I can't get it to work. When I test out these groups individually, they return what seems to be correct data. When I include both groups, it stops working and always returns an empty object. Obviously, there's something I'm misunderstanding, but I can't figure out what. Help!

import re

string = '''Love, Kenneth, kenneth+challenge@teamtreehouse.com, 555-555-5555, @kennethlove
Chalkley, Andrew, andrew@teamtreehouse.co.uk, 555-555-5556, @chalkers
McFarland, Dave, dave.mcfarland@teamtreehouse.com, 555-555-5557, @davemcfarland
Kesten, Joy, joy@teamtreehouse.com, 555-555-5558, @joykesten'''

contacts = (re.search(r'''
    ^(?P<email>[-\w\d.+]+@[-\w\d.]+)  #email
    (?P<phone>\d{3}-\d{3}-\d{4})$ #phone
''', string, re.X|re.M))

1 Answer

Steven Parker
Steven Parker
230,248 Points

You're close, but I see two issues:

  • the ^ and $ anchors require a pattern to be at the beginning and end of the string; and since the target is not at either of these, there won’t be a match
  • the pattern needs ,\s between the fields to consume the comma and space