Python/Regexp: Matcha epostadresser

Permalänk
Glömsk

Python/Regexp: Matcha epostadresser

Jag har inte stenkoll på regexp och att Pythons re-modul inte verkar begripa exempelvis $ gör det inte lättare.

Hur skulle ni skriva en re-kompatibel regexp som matchar följande:

>>> pattern = "något svårt här." >>> gibberish = "1qazxsw23edcvfr enkel@hotmail.com 45tgbnhy€lite-svar.are@domain1.domain2.d3.nu67ujmki87uj" >>> re.findall(pattern, gibberish) ['enkel@hotmail.com', 'lite-svar.are@domain1.domain2.d3.nu']

Det svåra här är är att epostadresserna i strängen inte behöver börja med ett whitespace, utan allting före @ får matchas bakåt så långt det går tills det stöter på ett ogiltigt tecken. Allting efter @ ska matchas så långt det går tills en domänändelse hittas, som inte heller behöver sluta med ett whitespace. För enkelhetens skull säger vi att ändelsen kan skrivas \.[a-zA-Z]{2,3}

Tack.

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk

>>> re.findall(r"[a-zA-Z0-9_.-]+?@[a-zA-Z0-9_.-]+\.[a-zA-Z]{2,3}", gibberish)

EDIT: Äh var ju mycket enklare än jag först trodde.

EDIT: Finns lite regler om hur email:s får se ut här.
http://www.ilovejackdaniels.com/php/email-address-validation/
(som min regexp inte följer)