Ten dovetek jsem moc nepochopil, ja bych to spis vyvratil tvrzenim, ze se
snazi parsovat jazyk a^n b^n (krasnym prikladem je kontrola spravneho
uzavorkovani, toto je vpodstate shodne), ktery neni regularni, ale
bezkontexovy uz je, takze by se na to dal pouzit nejak LR, LL parser, ci
jednoduse zasobnikovy automat ... ale k parsovani XML dokumentu jsou mnohem
vhodnejsi knihovny na prochazeni XML stromu, jak uz bylo receno ...

---------- Forwarded message ----------
From: Petr Messner <[email protected]>
Date: 2010/2/25
Subject: Re: [python] Greedy regexp
To: Konference PyCZ <[email protected]>


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
[email protected]
http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem