[python] Greedy regexp

Tomáš Drenčák tomas na drencak.com
Čtvrtek Únor 25 22:43:26 CET 2010


Na parsovanie zlozitejsich veci je perfektny pyparsing. Daju sa
definovat gramatiky a vo vnutri nich regexpy. Dokonca su tam uz aj
predpripravane gramatiky na parsovanie beznych veci...

V Štvrtok, 25. február 2010 o 22:25 +0100, Petr Messner napísal(a):
> Ahoj,
> 
> především jsi nenapsal, co se snažíš vyřešit.
> 
> Každopádně, XML nebo HTML se neparsuje regulárními výrazy (protože to prostě nejsou jazyky s regulární gramatikou, IIRC), jsou na to knihovny (BeautifulSoup, lxml atd.).
> 
> Pokud očekáváš 
> 
> > "One <a>Two</a> Three"
> 
> 
> pak bys prostě měl to jedno </a> v regulárním výraze přeskočit. Pak to ale bude bude regulární výraz specializovaný jen na elementy s jedním podelementem, což je důvod, proč na toto regulární výrazy nepoužívat.
> 
> PM
> 
> 
> On 25.2.2010, at 21:38, Vasco wrote:
> 
> > Zdravím,
> > 
> > zrovna se hraju v Pythonu s regexp a narazil jsem na menší zádrhel. Mám
> > následující řetězec:
> > 
> > "<a>One <a>Two</a> Three</a> <a>Four</a>"
> > 
> > A následující regexp:
> > 
> > "<(?P<name>\w+)>(?P<text>.*?)</(?P=name)>"
> > 
> > Když to proženu přes 'search', dostanu pro první nalezený výraz tohle:
> > 
> > "One <a>Two"
> > 
> > Ale očekával bych spíše:
> > 
> > "One <a>Two</a> Three"
> > 
> > Naopak, pokud upravím regexp na:
> > 
> > "<(?P<name>\w+)>(?P<text>.*)</(?P=name)>"
> > 
> > Tedy vynechám otazník. Výraz .* pak bere vše, co mu přijde do cesty,
> > takže výsledek metody 'search' je:
> > 
> > "One <a>Two</a> Three</a> <a>Four"
> > 
> > Takže to také není to pravé ořechové. Rád bych to vyřešil nějak
> > elegantně, nejlépe pomocí regexp (když už se je teda učím :) ), ale
> > zatím jsem nenarazil na nic funkčního. Dá se podobný problém vůbec řešit
> > čistě pomocí regularnich výrazů, nebo ne?
> > 
> > Btw. k testování reg. výrazů používám prográmek
> > http://kodos.sourceforge.net Rozhodně můžu doporučit.
> > 
> > S pozdravem,
> > Vlastimil S.
> > _______________________________________________
> > Python mailing list
> > 
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python




Další informace o konferenci Python