[python] Regexpy a re.DOTALL
martin.stiborsky na gmail.com
martin.stiborsky na gmail.com
Úterý Září 4 11:39:10 CEST 2007
Zdravím.
Tady (http://groups.google.com/group/cz.comp.lang.python/browse_thread/
thread/4466880ab8c859c7?hl=cs) jsem s Vaší pomocí řešil, jak z
textového zdroje dostat část textu uzavřenou mezi nějakými značkami.
Teď to zkouším pomocí regexpů.
Pokud je celý zápis mezi start a end značkou na jednom řádku, je
všechno v pohodě a regexp funguje, pokud je ale text který chci
vypreparovat na více řádku a přidám do re.compile() flag re.DOTALL,
chová se dost podivně, asi to bude chtít jiný zápis, nevím ..
.py soubor:
# -*- coding: cp1250 -*-
import re
source = file('muj_regexp_pokus.txt' , 'r')
text = []
for line in source:
text.append(line)
retezec = ''.join(text)
vzor = re.compile(r":start:(.*):end:", re.DOTALL)
for vyskyt in re.finditer(vzor, retezec):
print vyskyt.group(1)
.txt soubor:
toto je textovy soubor pro pokus s regexpem :) ( file:
muj_regexp_pokus.py)
z tohoto radku budem regularem parsovat ... :start: toto chci, mam
to ? :end:
z tohoto radku nechci nic, nejsou tady start/end znacky, za ano :)
na tenhle taky prdim, je tu tak maximalne pro okrasu
ale tady by se uz neco naslo :start: regexpy jsou fajn :) :end:
tady taky: :start: Regulary jsou fakt sranda :end:
FOO :)
:start:
a tady to bude zajimave, zdrojak a text, zdrojak je pres nekolik
radku :)
import os
def getDir(dir='/'):
adresare = [x for x in os.listdir(dir) if os.path.isdir('%s%s' %
(dir,x))]
print adresare
getDir()
to jsem zvedav jak ten regexp dokopu k tomu, aby fungoval, snad jo :)
:end:
No a to by snad stacilo .. snad jen nakonec
:start: Predposledni radek, ten chci taky .... :end:
Konec.
Další informace o konferenci Python