[python] Problem s regularnym vyrazom
RMiklos na pss.sk
RMiklos na pss.sk
Pátek Únor 2 14:00:54 CET 2007
No predsa to ide tym vyrazom od Lea, ktory som vcera prehliadol a na ktory
ma upozornil Petr Hlavka
Takze takto to funguje:
--------------------------------------------------------------
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 ); Label
on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1',
VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS
'BSVNR');'''
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>[^;]*)\)")
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
--------------------------------------------------------------
dolezite je v regexpe toto:
[^;]* - to znamena vsetky znaky okrem ;
"Petr Prikryl" <PrikrylP na skil.cz>
Sent by: python-bounces na py.cz
02.02.2007 13:24
Please respond to
Konference PyCZ <python na py.cz>
To
"Konference PyCZ" <python na py.cz>
cc
Subject
Re: [python] Problem s regularnym vyrazom
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í.
pepr
_______________________________________________
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