» »

Regular expression

Regular expression

sax15 ::

Zdravo,
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:

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:
<a\shref="#"\sonclick="javascript:return\sfalse;">(?<Title>[^<]+)(.|\n)*so.addParam\("wmode","transparent"\);so.addParam\("flashvars","&file=(?<url>[^&]+)


Hvala in lp

perro_si ::

Prosim. :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Neomejeni internet prenosnik Korčula

Oddelek: Omrežja in internet
111273 (969) ...:TOMI:...
»

Ivo is back

Oddelek: Problemi človeštva
293855 (1806) harvey
»

dvb-t na hrvaškem

Oddelek: Zvok in slika
61869 (1731) Alexius Heristalski
»

Hrvaška televizija (oddaja Otvoreno) objavila posnetke pogovora Tuđmana s svojimi pov

Oddelek: Problemi človeštva
81817 (1094) Sasha05
»

Bo Sony zaradi rootkita tožen zaradi piratstva?

Oddelek: Novice / Avtorsko pravo
404503 (3234) Stepni Volk

Več podobnih tem