Sponsored Content
Full Discussion: Using Regex
Top Forums UNIX for Beginners Questions & Answers Using Regex Post 302986743 by drl on Tuesday 29th of November 2016 02:37:24 PM
Old 11-29-2016
Hi.

The syntax for email addresses is complicated. Here's a short perl code that tries to catch most correct addresses:
Code:
#!/usr/bin/env perl

# @(#) p1       Demonstrate recognize email addresses, perl common regex.

use strict;
use warnings;

use Regexp::Common qw[Email::Address];
use Email::Address;

my (@a) = <>;

print " Addresses being examined:\n";
print @a;

print "\n";
print " Acceptable email address string anywhere on line:\n";
for (@a) {
  my (@found) = /($RE{Email}{Address})/g;
  my (@addrs) = map $_->address, Email::Address->parse("@found");
  print "X-Addresses: ", join( ", ", @addrs ), "\n";
}

print "\n";
print " Entire line must match acceptable email address:\n";
for (@a) {
  my (@found) = /^($RE{Email}{Address})$/g;
  my (@addrs) = map $_->address, Email::Address->parse("@found");
  print "X-Addresses: ", join( ", ", @addrs ), "\n";
}

print "\n";
print "See document at https://en.wikipedia.org/wiki/Email_address#Syntax\n";

exit(0);

producing:
Code:
$ ./p1 data1
 Addresses being examined:
hmmeeranrizvi18@gmail.com
dfeugfbfveuifg@gmail,com
Mohamed@msystechnologies.com
12345@gmail.com
raja@jj@gmail.com
krish@yahoo.commm
jack34@97899.in

 Acceptable email address string anywhere on line:
X-Addresses: hmmeeranrizvi18@gmail.com
X-Addresses: dfeugfbfveuifg@gmail
X-Addresses: Mohamed@msystechnologies.com
X-Addresses: 12345@gmail.com
X-Addresses: raja@jj
X-Addresses: krish@yahoo.commm
X-Addresses: jack34@97899.in

 Entire line must match acceptable email address:
X-Addresses: hmmeeranrizvi18@gmail.com
X-Addresses: 
X-Addresses: Mohamed@msystechnologies.com
X-Addresses: 12345@gmail.com
X-Addresses: 
X-Addresses: krish@yahoo.commm
X-Addresses: jack34@97899.in

See document at https://en.wikipedia.org/wiki/Email_address#Syntax

Best wishes ... cheers, drl
This User Gave Thanks to drl For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regex

Hi, i want to match a string using perl that has got 5 pluses(+++++). i am using a function for this. $str1="+++++"; check($str1,"\\+"); sub check{ $str1=$_; $str2=$_; if($str1=~m/^$str2{5}$/){ print "Correct.\n"; }else{ print "Wrong..\n"; ... (6 Replies)
Discussion started by: deepakpv
6 Replies

2. Shell Programming and Scripting

Need a regex

Hi, I am trying to grep for the following type of string from a document given below: 12637 1239 3356 12956 7004 7004 7004 13381 13381 *> 12.0.1.63 0 7018 21872 ? * 208.51.134.254 53 0 3549 7018 21872 ?... (1 Reply)
Discussion started by: Legend986
1 Replies

3. UNIX for Dummies Questions & Answers

regex

Can anyone give the detailed explanation on regex search i want to know the use of regex in sed and awk also...... the operators like ^,.,* ....etc i need it with some example.....kindly help on this. I gone through the man pages also..but i was not clear......... (1 Reply)
Discussion started by: sivakumar.rj
1 Replies

4. Shell Programming and Scripting

regex help

I would like to search strings composed by only one type of charachter for example only strings composed by the charachter 'b' is it right? $egrep '\<(b+)+\>' filename Could be there some side effects? Regards. (1 Reply)
Discussion started by: and77
1 Replies

5. Shell Programming and Scripting

Converting perl regex to sed regex

I am having trouble parsing rpm filenames in a shell script.. I found a snippet of perl code that will perform the task but I really don't have time to rewrite the entire script in perl. I cannot for the life of me convert this code into something sed-friendly: if ($rpm =~ /(*)-(*)-(*)\.(.*)/)... (1 Reply)
Discussion started by: suntzu
1 Replies

6. UNIX for Advanced & Expert Users

Vi Regex help

Can someone tell me what is going with this expression :%s/<C-V><C-M>/. Is there a way to get a more useful message if the carriage return has been deleted? http://objectmix.com/editors/149245-fixing-dos-line-endings-within-vim.html#post516826 Why does this expression work for... (1 Reply)
Discussion started by: cokedude
1 Replies

7. Shell Programming and Scripting

Regex for First and Last name

I have a regex I'd like to implement and I believe it should be working and I have tested it on various websites that have regex testers but it always says the name is invalid. #!/bin/bash -x echo Enter the users first and last name. read name if... (11 Replies)
Discussion started by: woodson2
11 Replies

8. UNIX for Dummies Questions & Answers

read regex from ID file, print regex and line below from source file

I have a file of protein sequences with headers (my source file). Based on a list of IDs (which are included in some of the headers), I'd like to print out only the specified sequences, with only the ID as header. In other words, I'd like to search source.txt for the terms in IDs.txt, and print... (3 Replies)
Discussion started by: pathunkathunk
3 Replies

9. Shell Programming and Scripting

Perl, RegEx - Help me to understand the regex!

I am not a big expert in regex and have just little understanding of that language. Could you help me to understand the regular Perl expression: ^(?!if\b|else\b|while\b|)(?:+?\s+){1,6}(+\s*)\(*\) *?(?:^*;?+){0,10}\{ ------ This is regex to select functions from a C/C++ source and defined in... (2 Replies)
Discussion started by: alex_5161
2 Replies

10. Shell Programming and Scripting

Sendmail K command regex: adding exclusion/negative lookahead to regex -a@MATCH

I'm trying to get some exclusions into our sendmail regular expression for the K command. The following configuration & regex works: LOCAL_CONFIG # Kcheckaddress regex -a@MATCH +<@+?\.++?\.(us|info|to|br|bid|cn|ru) LOCAL_RULESETS SLocal_check_mail # check address against various regex... (0 Replies)
Discussion started by: RobbieTheK
0 Replies
Mail::Address(3)					User Contributed Perl Documentation					  Mail::Address(3)

NAME
Mail::Address - Parse mail addresses SYNOPSIS
use Mail::Address; my @addrs = Mail::Address->parse($line); foreach $addr (@addrs) { print $addr->format," "; } DESCRIPTION
"Mail::Address" extracts and manipulates email addresses from a message header. It cannot be used to extract addresses from some random text. You can use this module to create RFC822 compliant fields. Although "Mail::Address" is a very popular subject for books, and is used in many applications, it does a very poor job on the more complex message fields. It does only handle simple address formats (which covers about 95% of what can be found). Problems are with o no support for address groups, even not with the semi-colon as separator between addresses; o limitted support for escapes in phrases and comments. There are cases where it can get wrong; and o you have to take care of most escaping when you create an address yourself: "Mail::Address" does not do that for you. Often requests are made to the maintainers of this code improve this situation, but this is not a good idea, where it will break zillions of existing applications. If you wish for a fully RFC2822 compliant implementation you may take a look at Mail::Message::Field::Full, part of MailBox. example: my $s = Mail::Message::Field::Full->parse($header); # ref $s isa Mail::Message::Field::Addresses; my @g = $s->groups; # all groups, at least one # ref $g[0] isa Mail::Message::Field::AddrGroup; my $ga = $g[0]->addresses; # group addresses my @a = $s->addresses; # all addresses # ref $a[0] isa Mail::Message::Field::Address; METHODS
Constructors Mail::Address->new(PHRASE, ADDRESS, [ COMMENT ]) Create a new "Mail::Address" object which represents an address with the elements given. In a message these 3 elements would be seen like: PHRASE <ADDRESS> (COMMENT) ADDRESS (COMMENT) example: Mail::Address->new("Perl5 Porters", "perl5-porters@africa.nicoh.com"); $obj->parse(LINE) Parse the given line a return a list of extracted "Mail::Address" objects. The line would normally be one taken from a To,Cc or Bcc line in a message example: my @addr = Mail::Address->parse($line); Accessors $obj->address Return the address part of the object. $obj->comment Return the comment part of the object $obj->format([ADDRESSes]) Return a string representing the address in a suitable form to be placed on a "To", "Cc", or "Bcc" line of a message. This method is called on the first ADDRESS to be used; other specified ADDRESSes will be appended, separated with commas. $obj->phrase Return the phrase part of the object. Smart accessors $obj->host Return the address excluding the user id and '@' $obj->name Using the information contained within the object attempt to identify what the person or groups name is. $obj->user Return the address excluding the '@' and the mail domain SEE ALSO
This module is part of the MailTools distribution, http://perl.overmeer.net/mailtools/. AUTHORS
The MailTools bundle was developed by Graham Barr. Later, Mark Overmeer took over maintenance without commitment to further development. Mail::Cap by Gisle Aas <aas@oslonett.no>. Mail::Field::AddrList by Peter Orbaek <poe@cit.dk>. Mail::Mailer and Mail::Send by Tim Bunce <Tim.Bunce@ig.co.uk>. For other contributors see ChangeLog. LICENSE
Copyrights 1995-2000 Graham Barr <gbarr@pobox.com> and 2001-2007 Mark Overmeer <perl@overmeer.net>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html perl v5.12.1 2010-01-26 Mail::Address(3)
All times are GMT -4. The time now is 04:35 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy