Bekijk Volledige Versie : help bij regexps
Jan Smeelen
23/07/03, 03:50
Ik ben niet sterk in regexps,
echter hoop ik dat er hier wel
kenners zijn, die me kunnen helpen :o)
Probleempje :
Bijv.
From:"Jan \"Sm,eelen\""<jan@geenreclamesmeelenxx.rommel> ,"Piet "
<piet@geenreclamesmeelenxx.rommel>
mogelijk staan er dubbele < voor het e-mail adres,
dat heb ik gedaan omdat Outlook er uiteraard weer eens
een links van maakt ;)
Nu wil uit die regel beiden Namen en mail-adressen apart hebben.
Ik denk dat dit het beste kan met regexps immers kan ik
niet splitten op "," ( staat in dit voorbeeld namelijk ook
in de 1e afzender naam ) en ook niet op de "
Dank voor de hulp !
Jan.
Daniel Tryba
23/07/03, 09:05
Jan Smeelen <smeelen@friaco.nl> wrote:
> From:"Jan \"Sm,eelen\""<jan@geenreclamesmeelenxx.rommel> ,"Piet "
> <piet@geenreclamesmeelenxx.rommel>
>
> mogelijk staan er dubbele < voor het e-mail adres,
> dat heb ik gedaan omdat Outlook er uiteraard weer eens
> een links van maakt ;)
>
> Nu wil uit die regel beiden Namen en mail-adressen apart hebben.
>
> Ik denk dat dit het beste kan met regexps immers kan ik
> niet splitten op "," ( staat in dit voorbeeld namelijk ook
> in de 1e afzender naam ) en ook niet op de "
Aangezien tussen de (optionele) quotes voor <> zowat alles mogelijk is
lijkt me een regexp verzinnen hiervoor tamelijk ingewikkeld. IMHO kan je
beter door de string wandelen en al quotes, commas en <> tellend de zut
uitelkaar rukken.
BTW als je het toevallig in PHP wilt doen dan kan je wellicht iets met
de functie imap_rfc822_parse_headers...
--
Daniel Tryba
John Bokma
23/07/03, 11:35
Jan Smeelen wrote:
> Ik ben niet sterk in regexps,
> echter hoop ik dat er hier wel
> kenners zijn, die me kunnen helpen :o)
>
> Probleempje :
> Bijv.
>
> From:"Jan \"Sm,eelen\""<jan@geenreclamesmeelenxx.rommel> ,"Piet "
> <piet@geenreclamesmeelenxx.rommel>
>
> mogelijk staan er dubbele < voor het e-mail adres,
> dat heb ik gedaan omdat Outlook er uiteraard weer eens
> een links van maakt ;)
>
> Nu wil uit die regel beiden Namen en mail-adressen apart hebben.
>
> Ik denk dat dit het beste kan met regexps immers kan ik
> niet splitten op "," ( staat in dit voorbeeld namelijk ook
> in de 1e afzender naam ) en ook niet op de "
>
> Dank voor de hulp !
> Jan.
my (@email) = $str =~ /(<([^>]+)>/g;
Is een van de mogelijkheden
John
--
email: mail(at)johnbokma.com (or reply) home: http://johnbokma.com/
UI design tips: http://johnbokma.com/websitedesign/ ~ ICQ 218175426
zwemvlies verzoekschrift ontwikkeling op maat
John Bokma
23/07/03, 11:35
John Bokma wrote:
> Jan Smeelen wrote:
>
>> Ik ben niet sterk in regexps,
>> echter hoop ik dat er hier wel
>> kenners zijn, die me kunnen helpen :o)
>>
>> Probleempje :
>> Bijv.
>>
>> From:"Jan \"Sm,eelen\""<jan@geenreclamesmeelenxx.rommel> ,"Piet "
>> <piet@geenreclamesmeelenxx.rommel>
>>
>> mogelijk staan er dubbele < voor het e-mail adres,
>> dat heb ik gedaan omdat Outlook er uiteraard weer eens
>> een links van maakt ;)
>>
>> Nu wil uit die regel beiden Namen en mail-adressen apart hebben.
>>
>> Ik denk dat dit het beste kan met regexps immers kan ik
>> niet splitten op "," ( staat in dit voorbeeld namelijk ook
>> in de 1e afzender naam ) en ook niet op de "
>>
>> Dank voor de hulp !
>> Jan.
>
>
> my (@email) = $str =~ /(<([^>]+)>/g;
>
> Is een van de mogelijkheden
Ah, niet goed gelezen :-).
\" = escape, je zou die kunnen omzetten naar \000 :
$str =~ s/\\\"/\000/g; # uit mijn hoofd
my(@names) = $str =~ /(\"([^\"]+)\"/g; # dit kan leesbaarder :-)
En dan @names = map { s/\000/\"/g } @names; # uit mijn hoofd
Deze en de vorige moet je nog combineren, let op dat je from
bv@bla.invalid kan hebben zonder name...
John
--
email: mail(at)johnbokma.com (or reply) home: http://johnbokma.com/
UI design tips: http://johnbokma.com/websitedesign/ ~ ICQ 218175426
zwemvlies verzoekschrift ontwikkeling op maat