webForumDet fria alternativet

RegExp: Hitta <!-- * -->

ASP

48 svar · 1 684 visningar · startad av oskars · sida 3 av 3

Frågan, av oskars

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 a

Läs frågan i sin helhet →
Medlem sedan juni 20019 519 inlägg
#41

.red:

SubjectString = "<!-- local=""bob"" file=""saf"" -->123<!-- local--> </span>   </p>    <p class=""id"">  <span class=""cust"">asd</span>"
Dim myRegExp, ResultString
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "(<!-- local=""[^""]+"" file=""[^""]+"" -->)[\d\-:]+(<!-- local--> </span>   </p>    <p class=""id"">  <span class=""cust"">[\s\S]*?</span>)"
ResultString = myRegExp.Replace(SubjectString,"$1$2")
Response.Write ResultString

' Annat Exempel....
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "(<!-- local=""[^""]+"" file=""[^""]+"" -->)[\d\-:]+(<!-- local-->)"
ResultString = myRegExp.Replace(SubjectString,"$1$2")
Response.Write ResultString

båda Exemplena fungera för mig...

Medlem sedan nov. 20051 317 inlägg
#42

Åh du är grym!

Det där hjälpte mig!
TACK!

Medlem sedan nov. 20051 317 inlägg
#43

Jippie! Jag har lyckats göra mitt första fullt fungerande RegExp-pattern :D hehe!

(#.*?#06[0-4]\d+#.*?#)

Det hittar rader i en textfil som ser ut så här #12#060988#247833#

:h :r

Vad betyder egentligen [0-4]\d+ ? Jag tror att det betyder att det kan vara noll till fyra stycken siffror... men vad betyder plusset?

Medlem sedan dec. 20025 483 inlägg
#44

[0-4] betyder siffrorna 0, 1, 2, 3 eller 4. Endast en siffra alltså.

\d+ betyder en eller flera siffror, och är samma sak som [0-9]+.

Medlem sedan juni 20019 519 inlägg
#45

(#\d{2}#06[0-4]\d+#\d+#)

hade jag nog kört om jag hade varit dig... .*? är ingen bra lösning ...

om du vill att ditt regExp skall träffa (exempelvis 0-4 så kan du skriva):
\d{0-4}

Medlem sedan nov. 20051 317 inlägg
#46

Peter S skrev:

[0-4] betyder siffrorna 0, 1, 2, 3 eller 4. Endast en siffra alltså.

\d+ betyder en eller flera siffror, och är samma sak som [0-9]+.

Aha! :) Inte konstigt att det har blivit fel förut :e

Så med andra ord så det så här:

[0-4] betyder 1, 2, 3 eller 4.
[0-9]+ betyder att det är siffrorna 0-9, men det kan vara t.ex 5st siffror i följd?

voigtann1 skrev:

(#\d{2}#06[0-4]\d+#\d+#)

hade jag nog kört om jag hade varit dig... .*? är ingen bra lösning ...

om du vill att ditt regExp skall träffa (exempelvis 0-4 så kan du skriva):
\d{0-4}

Aha, okej! \d{2} antar jag betyder "två stycken siffror"? Då borde jag ju kunna sätta \d{6} istället för \d+ där i slutet, för där är det alltid 6st siffror.

Men där jag har skrivit "[0-4]\d+". Är det samma som [0-4]+ ?

Medlem sedan juni 20019 519 inlägg
#47

nej:
[0-4]\d+ är:
den måste träffar 0-4 och sen 1-fler tal:

01234 kommer att träffas
men inte 51234

Medlem sedan nov. 20051 317 inlägg
#48

Aha okej! Tack!

Men \d{6} träffar alltså allt som är siffror?

Vart har du lärt dig det du kan om RegExp? :)

Medlem sedan juni 20019 519 inlägg
#49

precis \d{6} är att det måste vara 6 nummer. Jag är långt ifrån duktig inom RegExp. Jag gillar det och då inte många var så jätte glada vid regExp på wF (för mååånga år sen) så tyckte jag att det hade varit kul att lära mig det så jag kunde hjälpa wF medlemmar om just dessa frågorna. Köpt böcker program och läst från https://www.webeye.nu

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