Avatar billede Slettet bruger
01. maj 2007 - 11:54 Der er 13 kommentarer og
1 løsning

Hjælp til accept af linieskift i regulært udtryk

Hej

Mit regulære udtryk kan ikke køres når der er linjeskift i teksten imellem de søgte tags. Det er nat. fordi jeg bruger . i min søgetekst.

Hvordan får jeg omskrevet dette:

var objRegExp1 = /\<unic:liste\>.*\<\/unic:liste\>/g;

så det kan finde dette:

<unic:liste>
<![CDATA[
<tr><td valign="top">01/05 2007</td><td valign="top"><a

href="http://uddannelsesforum2007.emu.dk/tipenven/tevtekster/tekst2.html" class="overskrift" title="kjnknkjnknjk">Teskt

2</a></td></tr>
]]>
</unic:liste>

På forhånd tak. Jeg lukker mit andet spm. da det var for uklart formuleret.
Avatar billede erikjacobsen Ekspert
01. maj 2007 - 12:24 #1
http://www.regular-expressions.info/javascript.html    /m ??

var objRegExp1 = /\<unic:liste\>.*\<\/unic:liste\>/gm;
Avatar billede barklund Nybegynder
01. maj 2007 - 12:26 #2
Så vidt jeg husker har JS ikke en DOTALL-modifier som posix og mange andre har. Derfor er du nok nødt til:

var objRegExp1 = /\<unic:liste\>(.|\n|\r)*\<\/unic:liste\>/g;

:)

--
Morten Barklund
Avatar billede barklund Nybegynder
01. maj 2007 - 12:27 #3
/m er vel blot at ^ og $ matcher start-of-line hhv. end-of-line og ikke kun start-of-string hhv. end-of-string?
Avatar billede barklund Nybegynder
01. maj 2007 - 12:45 #4
Vs. forskellen på m og s i PHP-manualen: http://dk.php.net/manual/en/reference.pcre.pattern.modifiers.php
Avatar billede erikjacobsen Ekspert
01. maj 2007 - 12:58 #5
Du har helt ret, barklund ;)
Avatar billede Slettet bruger
01. maj 2007 - 22:04 #6
Tak for input, jeg tester i morgen på arbejdet :) Umiddelbart ser det barklund skriver fornuftigt ud...
Avatar billede Slettet bruger
02. maj 2007 - 07:58 #7
Det virker desværre ikke :(

Filen samlet.rss indeholder nu blot følgende (som simpel test):

<unic:liste>
ihiuhu
</unic:liste>

<unic:liste>ers</unic:liste>


Selve scriptet indeholder følgende (baseret på http://www.prototypejs.org)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>EMU js test</title>
<script language="JavaScript1.2" src="prototype.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
new Ajax.Request('samlet2.rss',
{
method:'get',
onSuccess: function(transport){
var response = transport.responseText || "no response text";
content = transport.responseText;

//alert(content);

var objRegExp1 = /\<unic:liste\>(.|\n|\r)*\<\/unic:liste\>/g;

content_temp =  content.match(objRegExp1);

    if(content_temp.length > 0) {
    document.write('<select>');
        for(i=0;i<content_temp.length;i++) {
        content2 = content_temp[i].replace('<unic:liste>','');
        content2 = content2.replace('</unic:liste>','');

        alert(content2);
        document.write('<option>' + content2);
        }
    document.write('</select>');
    }
},
onFailure: function(){ alert('Something went wrong&nbsp;') }
});
</script>
</body>
</html>
Avatar billede barklund Nybegynder
02. maj 2007 - 09:19 #8
Altså, hvis jeg laver:

alert("foo\r\nbar".match(/foo(?:.|\n|\r)+bar/));

Så virker det helt fint - \r og \n bliver fint matchet.

Du skal nok også have en ungready-modifier på din * - så det bliver:

/\<unic:liste\>(.|\n|\r)*?\<\/unic:liste\>/g;

Noget helt andet er dog - hvorfor bruger du ikke en XML-tilgang til dine XML-data? Hvorfor tilgå det som strenge? Hvis du skal bruge XML skal du dog lige have samlet2.rss til at være lovlig XML (kun en root-node).

--
Morten Barklund
Avatar billede Slettet bruger
02. maj 2007 - 10:07 #9
Jeg ville gerne læse min RSS som XML men jeg synes det har været svært at finde en metode der er bare nogenlunde cross-browser :/

Den rigtige RSS-fil er da også gyldig XML, den her i spørgsmålet er bare til at teste med :)

Den korrekte RSS-fil kan iøvrigt ses på http://uddannelsesforum2007.emu.dk/tipenven/tevtekster/samlet.rss hvis det skulle have interesse.

Jeg kigger lige på om din løsning virker nu.
Avatar billede Slettet bruger
02. maj 2007 - 11:41 #10
Tak barklund, det virker fint. Dog er det som om siden aldrig bliver færdig med at læse ind, den står og kører med "indlæser..." når jeg tester i Forefox. Måske det er noget af JS'en der ikke bliver færdig?
Avatar billede barklund Nybegynder
02. maj 2007 - 12:21 #11
Burde ikke have betydning :)
Avatar billede Slettet bruger
02. maj 2007 - 22:46 #12
Jeg har også fået det til at virke :)

Hvis du lægger er svar skal du have tak for hjælpen!
Avatar billede barklund Nybegynder
03. maj 2007 - 09:12 #13
Cool :)
Avatar billede barklund Nybegynder
06. maj 2007 - 11:28 #14
Taktak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester