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