[python] Regulární výraz s proměnnou

Martin Jedlička jedlicka na poll.cz
Středa Červen 28 12:03:23 CEST 2006


jo, to bude ono... nejak jsem si to neuvedomil... diky moc

Martin

Petr Prikryl napsal(a):
> Martin Jedlička
>   
>>   mám takovýto kus zdrojáku pro hledání souboru *.sch:
>>
>> RegVyrazSCH = 
>> re.compile(
>>  r"(?P<souborsch>\d{4}-\d{1,3}-[-a-zA-Z0-9]+-\d{1,3}\.sch)")    
>>     
> [...]
>   
>> potřeboval bych vědet, jak hledat soubor pomocí regulárního výrazu s 
>> proměnnou, tedy když bych chtěl mít v regulárním výrazu místo \d{4}  
>> nějakou proměnnou, v které by bylo čtyřmístné číslo, které se 
>> bude měnit.
>>     
>
> Vzorek pro regulární výraz je řetězec. Řetězec si můžu kdykoliv
> zkonstruovat. Pokud tomu rozumím dobře, pak se má používat
> dynamicky se měnící vzorek, vypadající například takto:
>
> r"(?P<souborsch>1234-\d{1,3}-[-a-zA-Z0-9]+-\d{1,3}\.sch)"
>
> kde 1234 je konkrétní předpona určená obsahem proměnné.
> Konkrétně si na vhodném místě můžu generovat vzorek...
>
> vzorek = r"(?P<souborsch>" + s + r"-\d{1,3}-[-a-zA-Z0-9]+-\d{1,3}\.sch)"
>
> kde s naplním řetězcovou podobou toho čísla v očekávaném 
> tvaru. Příklad:
>
>   
>>>> i = 5
>>>> s = '%04d' % i
>>>> s
>>>>         
> '0005'
>
> Další problém v uvedeném příkladu je ten, že se regulární
> výraz kompiluje na začátku. V tomto případě se bude muset
> kompilovat po každé změně vzorku -- nebo se musí použít
> varianta příkazu bez kompilace.
>
> pepr
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>   


Další informace o konferenci Python