» »

Javascript in Regular Expression capture groups

sax15 ::

Zdravo.
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š
/(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):

<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
<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:
(?:<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 ...

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

[C#] Naključno razporejanje elementov v tabeli

Oddelek: Programiranje
20614 (295) TheAmunraaa
»

[C++] Končno enote za čas...

Oddelek: Programiranje
6380 (219) ---
»

Definiranje spremenjivke - javascript

Oddelek: Programiranje
5502 (425) a-ptuj
»

[C++] dinamicna alokacija iz subrutine

Oddelek: Programiranje
17530 (380) spin
»

Kaj je tukaj narobe [PHP]

Oddelek: Programiranje
121454 (1240) Bojevnik

Več podobnih tem