ok funguje to, vcera som si to nejako nevsimol.
"Petr Hlávka" <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 01.02.2007 17:44 Please respond to Konference PyCZ <[email protected]> To "Konference PyCZ" <[email protected]> cc Subject Re: [python] Problem s regularnym vyrazom Dobry den, vsak uprava s [^;] nerika, ze statement musi koncit strednikem, pouze reguralni vyraz nepreskoci pres strednik na dalsi prikaz LABEL ON... S pozdravem Petr Hlavka. On 2/1/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > No ano, ale ak tam je iba jedno CREATE TABLE(...) tak to nemusi byt > ukoncene so strednikom ; > > Ja som zatial obisiel ten regularny vyraz tak, ze este ked vsetko > nacitavam do stringu, preventivne hladam prvy strednik zlava a ak tam je, > tak vsetko od neho napravo odstranim > > idx_1st_semicolon=sql_statement.find(';') > if idx_1st_semicolon > 0: > sql_statement=sql_statement[:idx_1st_semicolon] > > No aj tak by ma zaujimal ten problem s regularnym vyrazom, pretoze som > skusal aj non greedy ale to pracuje uplne zle. > > > > > Leos Pol <[EMAIL PROTECTED]> > Sent by: [EMAIL PROTECTED] > 01.02.2007 15:15 > Please respond to > Konference PyCZ <[email protected]> > > > To > Konference PyCZ <[email protected]> > cc > > Subject > Re: [python] Problem s regularnym vyrazom > > > > > > > Zdravim, > > ja bych to asi nelamal pres koleno a udelal bych tohle: > > 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>[^;]*)\)") > > tzn: Kazde sql query je ukonceno strednikem..... > > Leo > > [EMAIL PROTECTED] wrote: > > Rad by som tymto oslovil odbornikov na regularne vyrazy. > > > > Extrahujem datove polia tabulky cez regularny vyraz takto: > > --------------------------- skript --------------------------- > > import sys,re > > > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > > (PERSONNR DECIMAL (10, 0) NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL > > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' > > 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*") > > > > result=regexp_sql_create.search(sql_statement) > > if result == None: > > # CREATE TABLE statement not valid ! > > print "SQL CREATE TABLE statement is not valid !!!" > > sys.exit() > > else: > > # Parse data from RegExp > > library=result.group('library') > > print "Library=%s" % library > > table=result.group('file') > > print "Table=%s" %table > > table_field_def=result.group('tbl_field_def') > > print "Field Definitions=%s" % table_field_def > > ------------------------ konec skriptu ------------------------ > > > > Potom definicie dat. poli dalej pracovavam. > > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > > > TABLE (...); moze obsahovat aj LABEL ON (...); > > takze moze vyzerat takto: > > > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > > (PERSONNR DECIMAL (10, 0) NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL > > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); > Label > > on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', > > VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS > > 'BSVNR');''' > > > > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze > > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu > > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v > > tele CREATE TABLE. > > > > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co > > potrebujem? > > Mgr. Ing. Roman MIKLÓŠ > > Prvá stavebná sporiteľňa a.s. > > Bajkalská 30, P. O. Box 48 > > 829 48 Bratislava 25 > > Tel.: +421/ 2 / 582 31 174 > > Fax: +421/ 2 / 582 31 109 > > > > _______________________________________________ > > Python mailing list > > [email protected] > > http://www.py.cz/mailman/listinfo/python > > > > > -- > ---- > Leos Pol > SW Engineer > Radiante Corp. > > If it can be imagined, > we can implement it > > _______________________________________________ > Python mailing list > [email protected] > http://www.py.cz/mailman/listinfo/python > > > Mgr. Ing. Roman MIKLÓŠ > Prvá stavebná sporiteľňa a.s. > Bajkalská 30, P. O. Box 48 > 829 48 Bratislava 25 > Tel.: +421/ 2 / 582 31 174 > Fax: +421/ 2 / 582 31 109 > > _______________________________________________ > Python mailing list > [email protected] > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
