Forum » Programiranje » Javascript in Regular Expression capture groups
Javascript in Regular Expression capture groups
sax15 ::
Zdravo.
Recimo da imam sledeči niz (izmišljen):
Sedaj bi rad s pomočjo RegEx v Javascriptu dobil vse pojavitve znakov testX in imgX (X=katerakoli številka).
Se pravi, da bi rad dobil polje naslednje oblike:
Ali mi lahko kdo pomaga pri tem?
lp SaX
Recimo da imam sledeči niz (izmišljen):
aksdncksdnck sdcsdcsd c a=test1 csdcmksdm b=img1 ccmkl cmsdklčcm cm ckdjk cjksd a=test2 fekjfkerjf kfkfjkfjksejkcsm b=img2 csdknmfkjs a=test3 fknmfkkfnerkfnkfn b=img3 vkn rjvk erjvkj
Sedaj bi rad s pomočjo RegEx v Javascriptu dobil vse pojavitve znakov testX in imgX (X=katerakoli številka).
Se pravi, da bi rad dobil polje naslednje oblike:
["test1", "img1", "test2", img2", "test3", "img3"]
Ali mi lahko kdo pomaga pri tem?
lp SaX
mihaelf3 ::
Da ti ujame testX in imgX imaš
Če je tista številka lahko tudi večja kot 9 imaš (recimo 11--dve cifri)
/(test|img)\d/g
Če je tista številka lahko tudi večja kot 9 imaš (recimo 11--dve cifri)
/(test|img)\d+/g
torch it
sax15 ::
Hvala.
Mogoče nisem dal najboljši primer. Konkretno bi rad iz HTML strani (del strani):
dobi sledeče polje:
Seveda je takšnih odsekov kode več z različinmi podatki.
Če sem še bol natančen bi rad iz html kode strani http://tvslo.si/?c_mod=play&op=oddaje&f...
dobil vse te podatke.
V aplikaciji Expresso (za kreiranje in testiranje regularnih izrazov) sem to storil z sledečim izrazom:
Vendar sem tukaj lahko uporabil named capture grup, ki pa ga javascript ne pozna.
Mogoče nisem dal najboljši primer. Konkretno bi rad iz HTML strani (del strani):
<div class="thumb"><a href="/predvajaj/globalna-vas/ava2.154780481/" onclick="search_play('ava2.154780481'); return false;"><img height="45" width="60" src="/_static/img/play/ico-nislike-avdio.gif" alt=""/></a></div> <div style="margin-top: 2px;"><div class="rp0 fl"><div class="full"></div></div></div> </div> <div align="left" style="margin-left: 70px;"> <div style="color:#BB3800; font-size:11px;">Globalna vas</div> <p><a href="/predvajaj/globalna-vas/ava2.154780481/" onclick="search_play('ava2.154780481'); return false;"><b>Globalna vas</a></b></p> <small>3. januar 2013</small> </div>
dobi sledeče polje:
["/_static/img/play/ico-nislike-avdio.gif", "Globalna vas", "/predvajaj/globalna-vas/ava2.154780481/", "3. januar 2013"]
Seveda je takšnih odsekov kode več z različinmi podatki.
Če sem še bol natančen bi rad iz html kode strani http://tvslo.si/?c_mod=play&op=oddaje&f...
dobil vse te podatke.
V aplikaciji Expresso (za kreiranje in testiranje regularnih izrazov) sem to storil z sledečim izrazom:
<img\sheight=".+?"\swidth=".+?"\ssrc="(?<image>.+?)"\salt=""/></a></div>.+?<div\sstyle="color.+?;">(?<name>.+?)</div>.+?<p><a\shref=".+?"\sonclick="search_play\(\'ava2.(?<idn>.+?)\'\);.+?<small>(?<date>.+?)</small>
Vendar sem tukaj lahko uporabil named capture grup, ki pa ga javascript ne pozna.
Spura ::
In kaj je problem? Pac ne mores imet imenovanih grup ampak imas zaporedne stevilke grup, drugace je pa isto?
sax15 ::
Ampak izraz
ne najde nobenega ujemanja?
Čeprav mi v Expresso lepo pokaže:
<img\sheight=".+?"\swidth=".+?"\ssrc="(.+?)"\salt=""/></a></div>.+?<div\sstyle="color.+?;">(.+?)</div>.+?<p><a\shref=".+?"\sonclick="search_play\(\'ava2.(.+?)\'\);.+?<small>(.+?)</small>
ne najde nobenega ujemanja?
Čeprav mi v Expresso lepo pokaže:
<row> <ID>0</ID> <Match><img height="45" width="60" src="/_static/img/play/ico-nislike-avdio.gif" alt=""/></a></div> <div style="margin-top: 2px;"><div class="rp0 fl"><div class="full"></div></div></div> </div> <div align="left" style="margin-left: 70px;"> <div style="color:#BB3800; font-size:11px;">Globalna vas</div> <p><a href="/predvajaj/globalna-vas/ava2.154780481/" onclick="search_play('ava2.154780481'); return false;"><b>Globalna vas</a></b></p> <small>3. januar 2013</small></Match> <image>/_static/img/play/ico-nislike-avdio.gif</image> <name>Globalna vas</name> <idn>154780481</idn> <date>3. januar 2013</date> </row>
sax15 ::
Nekaj sem uspel in sicer, če uporabim sledeč izraz:
pa še javascript koda:
na html kodi iz linka: http://tvslo.si/?c_mod=play&op=oddaje&f...
mi vrne tole:
Samo to je samo prva pojavitev. Zanima me kako lahko dobim vse pojavitve tega niza?
Sem že rešil.
(?:<img height=".+?" width=".+?" src=")(.+?)(?:" alt=""/></a></div>\n\t+<div style="margin-top: 2px;"><div class="rp0 fl"><div class="full"></div></div></div>\t</div>\n\t+<div align="left" style="margin-left: 70px;">\n\t+<div style="color:#BB3800; font-size:11px;">)(.+?)(?:</div>\n\t+<p><a href=".+?" onclick="search_play\(\'ava2.(.+?)\'\); return false;"><b>.+?</a></b></p>\n\t+<small>)(.+?)(?:</small>)
pa še javascript koda:
var re = new RegExp("(?:<img height=".+?" width=".+?" src=")(.+?)(?:" alt=""/></a></div>\n\t+<div style="margin-top: 2px;"><div class="rp0 fl"><div class="full"></div></div></div>\t</div>\n\t+<div align="left" style="margin-left: 70px;">\n\t+<div style="color:#BB3800; font-size:11px;">)(.+?)(?:</div>\n\t+<p><a href=".+?" onclick="search_play\(\'ava2.(.+?)\'\); return false;"><b>.+?</a></b></p>\n\t+<small>)(.+?)(?:</small>)", "gm"); var myArray = re.exec(str); if ( myArray != null) { for ( i = 0; i < myArray.length; i++ ) { var result = "myArray[" + i + "] = " + myArray[i];
na html kodi iz linka: http://tvslo.si/?c_mod=play&op=oddaje&f...
mi vrne tole:
myArray[0] = "<img height="45" width="60" src="http://img.rtvslo.si/_up/upload/2010/10/27/64738746_ico-radioprvi_fp3.jpg" alt=""/></a></div> <div style="margin-top: 2px;"><div class="rp0 fl"><div class="full"></div></div></div> </div> <div align="left" style="margin-left: 70px;"> <div style="color:#BB3800; font-size:11px;">Na današnji dan</div> <p><a href="/predvajaj/na-danasnji-dan/ava2.154874409/" onclick="search_play('ava2.154874409'); return false;"><b>Na današnji dan</a></b></p> <small>4. januar 2013</small>" myArray[1] = "http://img.rtvslo.si/_up/upload/2010/10/27/64738746_ico-radioprvi_fp3.jpg" myArray[2] = "Na današnji dan" myArray[3] = "154874409" myArray[4] = "4. januar 2013"
Samo to je samo prva pojavitev. Zanima me kako lahko dobim vse pojavitve tega niza?
Sem že rešil.
Zgodovina sprememb…
- spremenil: sax15 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [js] seštevanjeOddelek: Programiranje | 741 (565) | lebdim |
» | jquery in div-i (strani: 1 2 )Oddelek: Izdelava spletišč | 11241 (9979) | lisjak |
» | [C#] Naključno razporejanje elementov v tabeliOddelek: Programiranje | 2683 (2364) | TheAmunraaa |
» | HTML povecava slike na hover overOddelek: Izdelava spletišč | 803 (704) | para! |
» | CSS - DIV - Brez TabeleOddelek: Izdelava spletišč | 1587 (1290) | jernejp |