[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