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 | 1369 (1065) | ...:TOMI:... |
| » | Ivo is backOddelek: Problemi človeštva | 4053 (2004) | harvey |
| » | dvb-t na hrvaškemOddelek: Zvok in slika | 1994 (1856) | Alexius Heristalski |
| » | Hrvaška televizija (oddaja Otvoreno) objavila posnetke pogovora Tuđmana s svojimi povOddelek: Problemi človeštva | 1901 (1178) | Sasha05 |
| » | Bo Sony zaradi rootkita tožen zaradi piratstva?Oddelek: Novice / Avtorsko pravo | 4800 (3531) | Stepni Volk |