Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Regular Expressions, find Email Domain in Address

Tags:

I know I'm an idiot, but I can't pull the domain out of this email address:

'[email protected]' 

My desired output:

'@gmail.com' 

My current output:

. 

(it's just a period character)

Here's my code:

import re test_string = '[email protected]' domain = re.search('@*?\.', test_string) print domain.group() 

Here's what I think my regular expression says ('@*?.', test_string):

 ' # begin to define the pattern I'm looking for (also tell python this is a string)    @ # find all patterns beginning with the at symbol ("@")    * # find all characters after ampersand    ? # find the last character before the period    \ # breakout (don't use the next character as a wild card, us it is a string character)    . # find the "." character    ' # end definition of the pattern I'm looking for (also tell python this is a string)    , test string # run the preceding search on the variable "test_string," i.e., '[email protected]' 

I'm basing this off the definitions here:

http://docs.activestate.com/komodo/4.4/regex-intro.html

Also, I searched but other answers were a bit too difficult for me to get my head around.

Help is much appreciated, as usual. Thanks.

My stuff if it matters:

Windows 7 Pro (64 bit)

Python 2.6 (64 bit)


PS. StackOverflow quesiton: My posts don't include new lines unless I hit "return" twice in between them. For example (these are all on a different line when I'm posting):

@ - find all patterns beginning with the at symbol ("@") * - find all characters after ampersand ? - find the last character before the period \ - breakout (don't use the next character as a wild card, us it is a string character) . - find the "." character , test string - run the preceding search on the variable "test_string," i.e., '[email protected]'

That's why I got a blank line b/w every line above. What am I doing wrong? Thx.

like image 728
PatentDeathSquad Avatar asked Apr 12 '11 02:04

PatentDeathSquad


People also ask

How do you write an regex for email address in Python?

General-Purpose Email Regular ExpressionThe prefix is the recipient;s name - a string that may contain uppercase and lowercase letters, numbers, and some special characters like the . (dot), - (hyphen), and _ (underscore). The domain consists of its name and a top-level domain divided by a . (dot) symbol.

How do I find the regex for a domain name?

[A-Za-z0-9-]{1, 63} represents the domain name should be a-z or A-Z or 0-9 and hyphen (-) between 1 and 63 characters long. (? <!


1 Answers

Here's something I think might help

import re s = 'My name is Conrad, and [email protected] is my email.' domain = re.search("@[\w.]+", s) print domain.group() 

outputs

@gmail.com 

How the regex works:

@ - scan till you see this character

[\w.] a set of characters to potentially match, so \w is all alphanumeric characters, and the trailing period . adds to that set of characters.

+ one or more of the previous set.

Because this regex is matching the period character and every alphanumeric after an @, it'll match email domains even in the middle of sentences.

like image 111
Conrad.Dean Avatar answered Oct 01 '22 09:10

Conrad.Dean