[python] Problem s regularnym vyrazom
Leos Pol
leos na radiante-corp.com
Pátek Únor 2 14:19:35 CET 2007
Petr Prikryl wrote:
> RMiklos na ...sk
>
>> To som skusal ale neni to tak jednoduche.
>> --------------------------------------------------------------
>> [...]'''CREATE TABLE IBPDDB071/R004660V
>> (PERSONNR DECIMAL (10, 0) NOT NULL WITH DEFAULT,
>> LFDNR1 DECIMAL (3, 0) [...] );'''
>> regexp_sql_create=\
>> re.compile(r"^\s*CREATE\s+TABLE\s+"
>> r"(?P<library>[A-Z0-9]+)\s*[/.]\s*(?P<file>[A-Z0-9]+)\s*"
>> r"\((?P<tbl_field_def>.*?)\)\s*")
>>
>
> No jasně. Když jsou vevnitř závorky, tak to nemůže
> fungovat. Problém je principiální. Regulární výrazy
> obecně nemohou popisovat řetězce jazyků, které obsahují
> párové struktury. Možná se dají zpracovat nějaké speciální
> případy na základě dalších znalostí.
>
>
Presne tak. V tomhle pripade jsem si pohraval s myslenkou, ktera by se
dala zapsat matematicky asi takhle (pouze pro retezec v zavorkach):
A = {a-zA-Z0-9_, }
B = {0-9, }
C = (B*)
L = (A*+C*)
Bohuzel, kdyz na to ted koukam, tak jazyk L neni regularni. Presto si
ale myslim, ze tento jazyk lze popsat gramatikou popr. automatem. Jestli
se pletu, opravte me prosim.
Leo
--
----
Leos Pol
SW Engineer
Radiante Corp.
If it can be imagined,
we can implement it
Další informace o konferenci Python