Here is a weird regular expression for emails .

We can have various kind of email addresses

string1@somemail.com
string1@somemail.co.in
string1.string2@somemail.com
string1.string2@somemail.co.in

The following regular expression can find any of the mails above

email2="santa.banta@gmail.co.in"
email1="arindam31@yahoo.co.in'"
email="bogusemail123@sillymail.com"
email3="santa.banta.manta@gmail.co.in"
email4="santa.banta.manta@gmail.co.in.xv.fg.gh"
email5="abc.dcf@ghj.org"
email6="santa.banta.manta@gmail.co.in.org"

re.search('\w+[.|\w]\w+@\w+[.]\w+[.|\w+]\w+',email)

>>> x=re.search('\w+[.|\w]\w+@\w+[.]\w+[.|\w+]\w+',email2)
>>> x.group()
'santa.banta@gmail.co.in'
>>> x=re.search('\w+[.|\w]\w+@\w+[.]\w+[.|\w+]\w+',email1)
>>> x.group()
'arindam31@yahoo.co.in'
>>> x=re.search('\w+[.|\w]\w+@\w+[.]\w+[.|\w+]\w+',email)
>>> x.group()
'bogusemail123@sillymail.com'

This seems too complicated right...

I generalized it a bit....

>>> x=re.search('(\w+[.|\w])*@(\w+[.])*\w+',email4)
>>> x.group()
'santa.banta.manta@gmail.co.in.xv.fg.gh'

The above regular expression now can detect any type of combination...

Now if you want only email address ending with '.in' or '.com'
then you can add a variation...

>>> x=re.search('(\w+[.|\w])*@(\w+[.])*(com$|in$)',email)

You can try out this on various combinations....
If the expression does not fit anywhere , do tell me .

Some assumptions I have used : email address(username) wont contain special characters , only words or numbers.

Good stuff!

Good stuff!

Thank you Sir

Thank you Sir

When you have a useful piece of code and no issue, write a code snippet instead of a regular thread. You can choose this in the 'title' section when you start a new thread.

Just some points,always use raw string r' ' with regex.
For email validation re.match(),for extracting re.search, re.findall().

There is no simple soultion for this,diffrent RFC standard set what is a valid email.
This has been up in several forum,here is a good one you can read.
http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses

Just a quick test with a invalid email address.

>>> e = 'Abc.@example.com'
>>> if re.match(r'(\w+[.|\w])*@(\w+[.])*\w+', e):
...     print 'Successful match'
... else:    
...     print 'Match attempt failed'
...     
Successful match

Good effort this is not so much criticism,i think you as many stumple into this.
So a regex that validate email addresses accordingh to RFC 822,look like this.
http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

When you have a useful piece of code and no issue, write a code snippet instead of a regular thread. You can choose this in the 'title' section when you start a new thread.

Il keep this in mind sir. Thanks for the suggestion

Just some points,always use raw string r' ' with regex.
For email validation re.match(),for extracting re.search, re.findall().

There is no simple soultion for this,diffrent RFC standard set what is a valid email.
This has been up in several forum,here is a good one you can read.
http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses

Just a quick test with a invalid email address.

>>> e = 'Abc.@example.com'
>>> if re.match(r'(\w+[.|\w])*@(\w+[.])*\w+', e):
...     print 'Successful match'
... else:    
...     print 'Match attempt failed'
...     
Successful match

Good effort this is not so much criticism,i think you as many stumple into this.
So a regex that validate email addresses accordingh to RFC 822,look like this.
http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

Good point sir........This is very usefull tip..........
While finding things........re.search or re.findall
While matching things.......re.match......

Il keep this in mind

Just some points,always use raw string r' ' with regex.
For email validation re.match(),for extracting re.search, re.findall().

There is no simple soultion for this,diffrent RFC standard set what is a valid email.
This has been up in several forum,here is a good one you can read.
http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses

Just a quick test with a invalid email address.

>>> e = 'Abc.@example.com'
>>> if re.match(r'(\w+[.|\w])*@(\w+[.])*\w+', e):
...     print 'Successful match'
... else:    
...     print 'Match attempt failed'
...     
Successful match

Good effort this is not so much criticism,i think you as many stumple into this.
So a regex that validate email addresses accordingh to RFC 822,look like this.
http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

Wow.....never saw thought of this bug in the code..........Very well caught sir.
I will try to play with my code and see if it work around the bug.......

And i visited the link u provided..........man that was a spiderweb......What is that seriously?Too too complex..........

More useful regular expression is explained in http://www.regular-expressions.info/email.html

r"\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b"

I added lower case so does not need to be used with flag ignore the case. The page has also standards confirming regular expression, but most features of standard are not practically needed or helpful.

commented: Consistently good advice. +10

The below one seems to be easy
res = re.findall('\S+[@]\S+', "hai xyz. bhai. ajith.@gmail.com goti@ santa@abc.com")

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.