[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