[python] re

Jan Janech devel na atlas.sk
Čtvrtek Únor 16 09:49:39 CET 2006


geon na py.cz wrote:
> Michal Molhanec napsal(a):
>> geon napsal(a):
>>> Dá se nějak docílit, pomocí nějakého flagu nebo parametru nebo nějak,
>>> abych měl stejnou syntaxi  regulárních výrazů jako u většiny
>>> ostatních jazyků (snad), co se týče obyčejných závorek, tedy abych
>>> mohl psat (cz|com) a ne (?:cz|com) ?
>>
>> To se snad chova stejne jako v PCRE/Perlu, co chtit vic?
> 
> Šlo mi o to, že mi zápis (cz|com) připadá čitelnější než (?:cz|com).
> Jde mi jen o "hezkost", nic jiného za tím nehledejte.
> V Perlu, tuším, by fungovaly oba dva příklady stejně.
> Že to nebere adresy s tečkou vím, je to zjednodušené.
> 
> 
> # -*- coding: cp1250 -*-
> 
> text="""From: "Jana" <Schova na mail.sdas.cz>
> To: "Alena" <alena.pla na cpp.cz>; "Bratranec" <fujirna na reme.cz>; "Buni?ka"
> <hana.masa na mesto-kadan.cz>; "Hana" <kola na hvp.cz>; "Iveta byt"
> <zock na sbdcv.cz>; "Pavel J" <pavel na centrum.cz>; "Jitka"
> <vranova na gmail.com>; "Soused" <lef na eopru.cz>; "Stadler"
> <jarda.s na volny.cz>"""
> 
> import re
> 
> print re.findall(r"\b\w+@\w+\.(cz|com)", text)  # "spatne"
> print re.findall(r"\b\w+@\w+\.(?:cz|com)", text)  # "dobre"
> 
> 
> geon

Tak toto je blbost konkretne findall. Ale takto to ide :)) xixi

In [1]: text="""From: "Jana" <Schova na mail.sdas.cz>
   ...: To: "Alena" <alena.pla na cpp.cz>; "Bratranec" <fujirna na reme.cz>;
"Buni?ka"   ...: <hana.masa na mesto-kadan.cz>; "Hana" <kola na hvp.cz>;
"Iveta byt"
   ...: <zock na sbdcv.cz>; "Pavel J" <pavel na centrum.cz>; "Jitka"
   ...: <vranova na gmail.com>; "Soused" <lef na eopru.cz>; "Stadler"
   ...: <jarda.s na volny.cz>"""

In [2]: import re

In [3]: findall = lambda r,t: [i.group(0) for i in re.finditer(r,t)]

In [4]: print re.findall(r"\b\w+@\w+\.(?:cz|com)", text)
['pla na cpp.cz', 'fujirna na reme.cz', 'kola na hvp.cz', 'zock na sbdcv.cz',
'pavel na centrum.cz', 'vranova na gmail.com', 'lef na eopru.cz', 's na volny.cz']

In [5]: print findall(r"(\b\w+@\w+\.(cz|com))", text)
['pla na cpp.cz', 'fujirna na reme.cz', 'kola na hvp.cz', 'zock na sbdcv.cz',
'pavel na centrum.cz', 'vranova na gmail.com', 'lef na eopru.cz', 's na volny.cz']



Janko



Další informace o konferenci Python