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

Elizabeth McInerney
Elizabeth McInerney
3,175 Points

?P<>

My code is returning empty. I think my problem is with ?P<>. Do I need to add something to put them both on one line?

emails.py
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.findall(r'(?P<email>[\w+.]+@[\w.]+)(?P<phone>\d{3}-\d{3}-\d{4})',string)

2 Answers

Hi Elizabeth,

The challenge instructions say to use re.search so you'll need to switch to that instead of re.findall

The only other issue is that you're not matching the comma and space between the email and phone number. You have to match these but they shouldn't be part of your named groups.

contacts = re.search(r'(?P<email>[\w+.]+@[\w.]+),\s(?P<phone>\d{3}-\d{3}-\d{4})',string)
Elizabeth McInerney
Elizabeth McInerney
3,175 Points

I've tried it with both search and findall, and it return empty both ways. I will try adding the comma and space.

Yes, you have to switch to re.search but also add in the comma and space.

You have to put it between your 2 named groups as I've shown in the code above.

Elizabeth McInerney
Elizabeth McInerney
3,175 Points

Thanks, the comma and the space worked. That makes sense. I thought it was pulling out any email and any phone number it found, but it makes sense that it is pulling out an email/phone combination.