Forum » Programiranje » Regular expression
Regular expression
sax15 ::
Zdravo,
imam sledeč problem. Imam html kodo, katere izsek izgleda takole:
Koda:
Sedaj bi pa rad z regularnimi izrazi iz te kode izluščil Dnevnik 26.3.2010. in pa http://www.hrt.hr:81/v/2603/dnevnik2603...
Regularni izraz, ki izlušči vsak posamezni del imam in sicer za Dnevnik 26.3.2010. je
Koda:
za http://www.hrt.hr:81/v/2603/dnevnik2603... pa
Koda:
Sedaj pa me zanima kako oba izraza skombinirati, da bom dobil dve grupi in sicer:
title: Dnevnik 26.3.2010.
url: http://www.hrt.hr:81/v/2603/dnevnik2603...
Hvala
imam sledeč problem. Imam html kodo, katere izsek izgleda takole:
Koda:
<div class="dnevLink uid67722"><a href="#" onclick="javascript:return false;">Dnevnik 26.3.2010.</a></div> <div class="dnevVideo uid67722"><div class="news-single-video"><span class="rgmediaimages-player rgmi67722 " id="playerafde02d3a2e0a0177ef32db56f43e777"></span> <script type="text/javascript"> var so = new SWFObject("http://www.hrt.hr/typo3conf/ext/rgmediaimages/res/mediaplayer.swf","mpl","379","300","8"); so.addParam("allowscriptaccess","always"); so.addParam("allowfullscreen","true"); so.addParam("wmode","transparent");so.addParam("flashvars","&file=http://www.hrt.hr:81/v/2603/dnevnik26032010.flv&streamer=lighttpd");so.addVariable('width','379'); so.addVariable('height','300'); so.addVariable('screencolor','0xE6E6E6'); so.addVariable('image','http://www.hrt.hr/fileadmin/templates/logoFlashBigBlue.png'); so.addVariable('logo','http://www.hrt.hr/fileadmin/templates/logoFlashTop.png'); so.write("playerafde02d3a2e0a0177ef32db56f43e777"); </script><br /></div></div>
Sedaj bi pa rad z regularnimi izrazi iz te kode izluščil Dnevnik 26.3.2010. in pa http://www.hrt.hr:81/v/2603/dnevnik2603...
Regularni izraz, ki izlušči vsak posamezni del imam in sicer za Dnevnik 26.3.2010. je
Koda:
onclick="javascript:return false;">(?<title>[^\<]+)
za http://www.hrt.hr:81/v/2603/dnevnik2603... pa
Koda:
so.addParam\("flashvars","&file=(?<VideoUrl>[^&]+)
Sedaj pa me zanima kako oba izraza skombinirati, da bom dobil dve grupi in sicer:
title: Dnevnik 26.3.2010.
url: http://www.hrt.hr:81/v/2603/dnevnik2603...
Hvala
perro_si ::
Oba izraza združiš tako, da poveš, da se med obema regularnima izrazoma lahko nahaja
karkoli, kar narediš z izrazom ".*". Torej, da združiš "R1" in "R2" v en izraz, narediš "R1.*R2",
karkoli pač R1 in R2 sta.
Ampak to še ni končna rešitev tvojega problema. Problem je v tem, da tvoj niz (string) iz
katerega želiš izrezati title in VideoUrl vsebuje znake za novo vrstico (karkoli že to so
v tvojem operacijskem sistemu).
Npr. v Pythonu se tega rešiš z zastavico re.DOTALL pri "kompajlanju" regularnega izraza,
kar pove knjižnici, da pika pomeni karkoli, tudi znak za prehod v novo vrstico. Koda
za python za tvoj problem pa bi izgledala takole:
Več si o RE v Pythonu si lahko prebereš na http://docs.python.org/library/re.html
karkoli, kar narediš z izrazom ".*". Torej, da združiš "R1" in "R2" v en izraz, narediš "R1.*R2",
karkoli pač R1 in R2 sta.
Ampak to še ni končna rešitev tvojega problema. Problem je v tem, da tvoj niz (string) iz
katerega želiš izrezati title in VideoUrl vsebuje znake za novo vrstico (karkoli že to so
v tvojem operacijskem sistemu).
Npr. v Pythonu se tega rešiš z zastavico re.DOTALL pri "kompajlanju" regularnega izraza,
kar pove knjižnici, da pika pomeni karkoli, tudi znak za prehod v novo vrstico. Koda
za python za tvoj problem pa bi izgledala takole:
import re r = re.compile('onclick="javascript:return false;">(?P<title>[^\<]+).*so.addParam\("flashvars","&file=(?P<VideoUrl>[^&]+)', re.DOTALL) m = r.search(str) # str je string, v katerem iščeš podatke print m.group('title') # izpiši title print m.group('VideoUrl') # izpiši video url
Več si o RE v Pythonu si lahko prebereš na http://docs.python.org/library/re.html
sax15 ::
Hvala za odgovor.
Rešitev:
Hvala in lp
Rešitev:
<a\shref="#"\sonclick="javascript:return\sfalse;">(?<Title>[^<]+)(.|\n)*so.addParam\("wmode","transparent"\);so.addParam\("flashvars","&file=(?<url>[^&]+)
Hvala in lp
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Neomejeni internet prenosnik KorčulaOddelek: Omrežja in internet | 1273 (969) | ...:TOMI:... |
» | Ivo is backOddelek: Problemi človeštva | 3855 (1806) | harvey |
» | dvb-t na hrvaškemOddelek: Zvok in slika | 1869 (1731) | Alexius Heristalski |
» | Hrvaška televizija (oddaja Otvoreno) objavila posnetke pogovora Tuđmana s svojimi povOddelek: Problemi človeštva | 1817 (1094) | Sasha05 |
» | Bo Sony zaradi rootkita tožen zaradi piratstva?Oddelek: Novice / Avtorsko pravo | 4503 (3234) | Stepni Volk |