Scan string w regex .. and HNYTAOY!

HNYTAOY (Dry version of … Happy New Year To All Of You)

I am trying to get an array of email addresses from a string , as this
string is coming from an input textarea in a from, even if I ask for a
blank between each address, users will also enter some return
characters…

so I get something like :

to_string =
[email protected]\r\[email protected]\r\[email protected]
[email protected]

I know how to use a_string.scan(" "), but here I should use a regex…
after many try … could not find the correct one…
could someone make 2007 starting on right tracks… thanks a lot !!

joss

On 2007-01-04 12:47:06 +0100, Josselin [email protected] said:

[email protected]\r\[email protected]\r\[email protected]
[email protected]

I know how to use a_string.scan(" "), but here I should use a regex…
after many try … could not find the correct one…
could someone make 2007 starting on right tracks… thanks a lot !!

joss

On Jan 4, 2007, at 6:55 AM, Josselin wrote:

I know how to use a_string.scan(" "), but here I should use a
regex… after many try … could not find the correct one…
could someone make 2007 starting on right tracks… thanks a lot !!
joss

forgot to mention what I wwrote until now :

to_string.split(%r{\r\n\s*}) which gives me teh addresses
separated by \r\n , but I missed the addresses separated by spaces

I would just scan for email addresses. I got this:
to_string.scan(/[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}/i)

From this site:
http://www.regular-expressions.info/email.html

Which seems to do the job reasonably well.
Happy new year to you too!
-Mat

On 2007-01-04 13:07:32 +0100, Mat S. [email protected] said:

so I get something like :
by \r\n , but I missed the addresses separated by spaces
-Mat
thanks Mat… I got it too… my concern is getting all adresses in one
array…
It seems that I could do a scan first to replace the \r\n by a space
then doing a split on space character will give me the array
finally I’ll use the regex to chexk each email address ( I am using a
Rails plugin validates_as_email , based on RFC2822 with a possibility
to perform an online checking if needed)

Joss

On 04.01.2007 13:07, Mat S. wrote:

On Jan 4, 2007, at 6:55 AM, Josselin wrote:

forgot to mention what I wwrote until now :

to_string.split(%r{\r\n\s*}) which gives me teh addresses separated
by \r\n , but I missed the addresses separated by spaces

I would just scan for email addresses.

Yeah, that’s what I’d also prefer over splitting.

I got this:
to_string.scan(/[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}/i)

From this site:
How to Find or Validate an Email Address

Which seems to do the job reasonably well.

Hm, IMHO the domain part could be a bit better with respect to dots.
Something like

(?:[A-Z0-9-]+.)+[A-Z]{2,4}

In some circumstances something simple like this will even work

[^\s@]+@[^\s@]+

And I bet there is a ton of variants…

Cheers

robert

On 1/4/07, James Edward G. II [email protected] wrote:

to_string.split

That seems easier than a regex to match an email.

James Edward G. II

That’s definitely easier. And more certain.

On Jan 4, 2007, at 5:55 AM, Josselin wrote:

forgot to mention what I wwrote until now :

to_string.split(%r{\r\n\s*}) which gives me teh addresses
separated by \r\n , but I missed the addresses separated by spaces

You can split() on any whitespace characters with:

to_string.split

That seems easier than a regex to match an email.

James Edward G. II

On Jan 4, 2007, at 8:06 AM, James Edward G. II wrote:

That seems easier than a regex to match an email.

/me slaps his forehead

agreed…
-Mat