[python] Regulární výraz s proměnnou
    Petr Prikryl 
    PrikrylP na skil.cz
       
    Středa Červen 28 11:45:43 CEST 2006
    
    
  
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
    
    
Další informace o konferenci Python