[python] Problem s regularnym vyrazom
RMiklos na pss.sk
RMiklos na pss.sk
Pátek Únor 2 09:23:03 CET 2007
ok funguje to, vcera som si to nejako nevsimol.
"Petr Hlávka" <petrhlavka na gmail.com>
Sent by: python-bounces na py.cz
01.02.2007 17:44
Please respond to
Konference PyCZ <python na py.cz>
To
"Konference PyCZ" <python na py.cz>
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, RMiklos na pss.sk <RMiklos na pss.sk> 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 <leos na radiante-corp.com>
> Sent by: python-bounces na py.cz
> 01.02.2007 15:15
> Please respond to
> Konference PyCZ <python na py.cz>
>
>
> To
> Konference PyCZ <python na py.cz>
> 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
>
> RMiklos na pss.sk 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
> > Python na py.cz
> > 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
> Python na py.cz
> 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
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
_______________________________________________
Python mailing list
Python na py.cz
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
Daląí informace o konferenci Python