webForumDet fria alternativet

RegExp: Hitta <!-- * -->

ASP

48 svar · 1 685 visningar · startad av oskars

Medlem sedan nov. 20051 317 inlägg
Frågan#1

Tjenare!

Jag försöker förstå hur jag ska göra ett mönster som hittar allting som ligger mellan <!-- och --> i en fil. Mitt första problem överhuvudtaget är hur man skriver just det mönstret, sen är det även så att i filen där jag vill hämta informationen så finns det flera såna här "items" som jag vill hämta.

Det kan typ se ut så här:

bla bla bal bla <!-- en text --> blasbasbdl <!-- en annan text -->. ..

Skulle vilja kunna hitta båda två "items" som finns på sidan. Det kan även finnas fler. Upp till typ 20...

Kan det räcka med ett mönster för att lösa problemet? Kan bara basic RegExp!

Tacksam för hjälp!

Mvh
Oskar

Medlem sedan okt. 20041 556 inlägg
#2

Så här kanske, pattern: <!--.*?-->

Så kan du plocka bort <!-- och --> med vanliga strängfunktioner.

Medlem sedan nov. 20051 317 inlägg
#3

Ja precis, ang. det där med att ta bort <!-- och -->

Kan inte testa det där just nu, men kommer jag få fram alla sådana items som finns på sidan?

Medlem sedan okt. 20041 556 inlägg
#4

Ja, om du sätter "global" till true.

set re = new regexp
re.global = true
re.pattern = "<!--.*?-->"
'...
Medlem sedan nov. 20051 317 inlägg
#5

Fantastiskt! Tackar och bugar :)

Jag har alltid använd .* för att hitta "vad som helst". Men vad gör ?-tecknet?

Medlem sedan juni 20031 837 inlägg
#6

frågetecken är 0 eller 1 gång.
* är 0, 1 eller flera gånger.
. är valfritt tecken.

Medlem sedan juni 20008 205 inlägg
#7

... och kombinationen *? betyder "hur många som helst, men så få som möjligt". Har du en sträng i stil med "noll <!-- ett --> två <!-- tre --> fyra", så matchar <!--.*--> hela substrängen "<!-- ett --> två <!-- tre -->" eftersom den är "greedy" och försöker matcha så mycket som det bara går. Använder du <!--.*?-->, däremot, matchas båda substrängarna "<!-- ett -->" och "<!-- två -->", eftersom *? avbryter så fort den kan.

Medlem sedan nov. 20051 317 inlägg
#8

Hm, har en hårding här som jag inte kan knäcka:

<!-- local id="5985" file="Oskar Schölander" -->5985<!-- local --> </span>   </p>    <p class="local">  <span class="cust">Oskar S.</span>

Här vill jag plocka ut värdet i id (4750), file (Oskar Schölander), <span class="cust"></span> (Oskar S.)

Det är alltså värdena inom parentes som jag vill hämta ut. Jag klarar det nästan, men det blir inget snyggt. Jag får med massa annan skit!

Hoppas jag kan få lite tips och exempel!

Mvh
Oskar

Medlem sedan juni 20019 519 inlägg
#9

Är det alltid samma struktur i den? dvs id och file ?

Medlem sedan nov. 20051 317 inlägg
#10

Jepp jepp, det är det som är det fina :)

Medlem sedan juni 20019 519 inlägg
#11

ok.. går "lätt" att lösa... tror jag försöker göra så du kan göra den "lite" dynamisk med.. återkommer.

Medlem sedan nov. 20051 317 inlägg
#12

Låter spännande! Jag hoppas att jag efter ditt exempel lär mig mer om hur det hänger ihop med RegExp. Har läst om mönster på webben, men det blir oftast för avancerat.

Medlem sedan nov. 20051 317 inlägg
#13

Varför kan jag inte bara lägga in .*? på fler än ett ställe? Testade ju det, men det blev konstigt då!

Medlem sedan juni 20019 519 inlägg
#14

Klart du kan lägga in .*? på fler än ett ställe... var menar du? eller *vad menar du

Medlem sedan nov. 20051 317 inlägg
#15

Men t.ex, varför får jag itne göra så här:

<!-- local id=".*?" file=".*?" -->5985<!-- local --> </span>   </p>    <p class="local">  <span class="cust">.*?</span>
Medlem sedan juni 20019 519 inlägg
#16

.*? = är inte ett bra sätt egentligen att ta match på:
[^"] då du har ett avslut på dina id och file. egentligen behövs den bara att avända den på din span tagg.

Medlem sedan nov. 20051 317 inlägg
#17

okej, jag får ogiltigt tecken när jag testar det där... fattar dock inget. Vill du visa ett exempel?

Medlem sedan juni 20019 519 inlägg
#18
<!-- local id="[^"]+" file="[^"]+" -->5985<!-- local --> </span>   </p>    <p class="local">  <span class="cust">.*?</span>

(ASP måste ju även ha "" ;) men patternet i "ren" form borde vara så..

Jag fick uppfattningen om att du ville bara matcha det som fanns inne i <!-- --> med värden mm?

Medlem sedan nov. 20051 317 inlägg
#19

Jepp, men jag vill utveckla det nu! :) :) :)

Medlem sedan nov. 20051 317 inlägg
#20

Gööööööööööött nu fick jag det att funka! :) Tack!

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)