/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Udtrække kommentarer via reg-expression
Fra : Bjørn Nesby


Dato : 22-03-03 16:55

Hej,

jeg er ved at lave et script som skal kunne udtrække kommentarer fra HTML
dokumenter. Der findes to slags kommentarer, en "text" og en "media"
kommentar, som jeg skelner imellem når jeg formatterer teksten.

Mit problem med scriptet er, at jeg ikke kan finde ud af hvordan man
genbruger et match fra den første reg-ex ($3) i den næste reg-ex...Jeg skal
bruge reg-ex nummer to til at lave *seperate* replace funktioner på alle
matches af "text" og "media" så de får forskelligt udseende

på forhånd tak,
Bjørn Næsby Nielsen


Her et scriptet (Jscript) - jeg har indrammet reg-ex #2
----------------------------------------------------------------

function inflateComments(textString) {

this.scope = new Array()
this.id = new Array()

// this expression extracts comments between "<!-- n2bot" and "-->"
var re = /(\<!\-\-\sn2bot)(\s*)(.+)(\s*)(\-\-\>)/gi

var out = "", last = 0, arr, i = 0;
//loop through the instances and save them
while ((arr = re.exec(textString)) != null) {

// --------------------------------------------------------------------
// 2nd regular expression: match against each result of first match ???
// --------------------------------------------------------------------
var re2 = /(\^$3)/gi

// split into "value pairs"
var str2=(RegExp.$3).split(" ")

// loop through value pairs...
for(j=0;j<str2.length;j++){
// split values...
var str=str2[j].split("=")
// check values...
for(k=0;k<str.length;k++){
switch(str[k]){
case "scope" : this.scope[i]=str[k+1]; break;
case "id" : this.id[i]=str[k+1]; break;
case "author" : this.author[i]=str[k+1]; break;
case "version" : this.version[i]=str[k+1]; break;
}
}
}
switch(this.scope[i]){
case "\"text\"" : out = textString.replace(re2, "Scope:text<!-- n2bot
$3-->"); break;
case "\"media\"" : out = textString.replace(re2, "Scope:media<!-- n2bot
$3-->");break;
}
i++
}
Response.Write(out)
}

----------------------------------h-------------------
Her er HTML til test af script
-----------------------------------------------------------------
<html>

<head>
<title>inflate comments</title>
</head>

<body bgcolor="#FF00FF">

<table border="1" cellpadding="0" cellspacing="0" width="100%"
bordercolor="#00FFFF">
<tr>
<td width="10%"><!-- n2bot scope="text" id="207" -->&nbsp;</td>
<td width="10%"><!-- n2bot scope="media" id="207" -->&nbsp;</td>
<td width="10%">&nbsp;</td>
<td width="10%">&nbsp;</td>
<td width="10%">&nbsp;</td>
<td width="10%">&nbsp;</td>
<td width="10%">&nbsp;</td>
<td width="10%">&nbsp;</td>
<td width="10%">&nbsp;</td>
<td width="10%">&nbsp;</td>
</tr>
</table>

</body>

</html>








 
 
Bjørn Nesby (24-03-2003)
Kommentar
Fra : Bjørn Nesby


Dato : 24-03-03 14:39

Jeg har selv fundet en løsning (jeg bruger istedet seperate reg-ex) - MEN
jeg kunne godt tænke mig at vide om der var nogle som lå inde med
information på hvordan man skelner mellem syntaks for expression m.
constructor (altså new RegExp()), og så expression uden constructor
(literal).

mvh
Bjørn Næsby Nielsen



"Bjørn Nesby" <120010333572@post.tele.dk> skrev i en meddelelse
news:3e7c8864$0$153$edfadb0f@dread15.news.tele.dk...
> Hej,
>
> jeg er ved at lave et script som skal kunne udtrække kommentarer fra HTML
> dokumenter. Der findes to slags kommentarer, en "text" og en "media"
> kommentar, som jeg skelner imellem når jeg formatterer teksten.
>
> Mit problem med scriptet er, at jeg ikke kan finde ud af hvordan man
> genbruger et match fra den første reg-ex ($3) i den næste reg-ex...Jeg
skal
> bruge reg-ex nummer to til at lave *seperate* replace funktioner på alle
> matches af "text" og "media" så de får forskelligt udseende
>
> på forhånd tak,
> Bjørn Næsby Nielsen
>
>
> Her et scriptet (Jscript) - jeg har indrammet reg-ex #2
> ----------------------------------------------------------------
>
> function inflateComments(textString) {
>
> this.scope = new Array()
> this.id = new Array()
>
> // this expression extracts comments between "<!-- n2bot" and "-->"
> var re = /(\<!\-\-\sn2bot)(\s*)(.+)(\s*)(\-\-\>)/gi
>
> var out = "", last = 0, arr, i = 0;
> //loop through the instances and save them
> while ((arr = re.exec(textString)) != null) {
>
> // --------------------------------------------------------------------
> // 2nd regular expression: match against each result of first match ???
> // --------------------------------------------------------------------
> var re2 = /(\^$3)/gi
>
> // split into "value pairs"
> var str2=(RegExp.$3).split(" ")
>
> // loop through value pairs...
> for(j=0;j<str2.length;j++){
> // split values...
> var str=str2[j].split("=")
> // check values...
> for(k=0;k<str.length;k++){
> switch(str[k]){
> case "scope" : this.scope[i]=str[k+1]; break;
> case "id" : this.id[i]=str[k+1]; break;
> case "author" : this.author[i]=str[k+1]; break;
> case "version" : this.version[i]=str[k+1]; break;
> }
> }
> }
> switch(this.scope[i]){
> case "\"text\"" : out = textString.replace(re2, "Scope:text<!-- n2bot
> $3-->"); break;
> case "\"media\"" : out = textString.replace(re2, "Scope:media<!--
n2bot
> $3-->");break;
> }
> i++
> }
> Response.Write(out)
> }
>
> ----------------------------------h-------------------
> Her er HTML til test af script
> -----------------------------------------------------------------
> <html>
>
> <head>
> <title>inflate comments</title>
> </head>
>
> <body bgcolor="#FF00FF">
>
> <table border="1" cellpadding="0" cellspacing="0" width="100%"
> bordercolor="#00FFFF">
> <tr>
> <td width="10%"><!-- n2bot scope="text" id="207" -->&nbsp;</td>
> <td width="10%"><!-- n2bot scope="media" id="207" -->&nbsp;</td>
> <td width="10%">&nbsp;</td>
> <td width="10%">&nbsp;</td>
> <td width="10%">&nbsp;</td>
> <td width="10%">&nbsp;</td>
> <td width="10%">&nbsp;</td>
> <td width="10%">&nbsp;</td>
> <td width="10%">&nbsp;</td>
> <td width="10%">&nbsp;</td>
> </tr>
> </table>
>
> </body>
>
> </html>
>
>
>
>
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste