23. november 2007 - 08:52
Der er
10 kommentarer og 1 løsning
Hjælp til RegExp
Hej, jeg skal have hjælp til regExp, eller en funktion som kan hjælpe med flg. Jeg har en streng bestående af en MASSE skrammel, i den streng har jeg <!--start--> og <!--stop--> indsat. Det jeg ønsker er at få uskrevet det tekst der står imellem start og stop.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
23. november 2007 - 09:22
#1
Set re = New RegExp re.Pattern = "<!--start-->([\s\S]*)<!--stop-->" Set match = re.Execute(str) If match.Count Then str2 = match(0).SubMatches(0) End If InStr plejer do at performe bedre end regexp: startpos = InStr(str, "<!--start-->") stoppos = InStr(str, "<!--stop-->") If startpos And stoppos Then str2 = Mid(str, startpos+12, stoppos-startpos-12) End If
23. november 2007 - 09:30
#2
det her virker ihvertfald ikke... str = myBigString Set re = New RegExp re.Pattern = "<!--leftclear-->([\s\S]*)<!--rightclear-->" Set match = re.Execute(str) If match.Count Then str2 = match(0).SubMatches(0) End If 'InStr plejer do at performe bedre end regexp: startpos = InStr(str, "<!--leftclear-->") stoppos = InStr(str, "<!--rightclear-->") If startpos And stoppos Then str2 = Mid(str, startpos+12, stoppos-startpos-12) End If
23. november 2007 - 09:31
#3
den skriver ikke noget ud..nothing at all
23. november 2007 - 10:06
#4
'[\s\s]' kan simpelthen skrives som '.': re.Pattern = "<!--leftclear-->(.*)<!--rightclear-->" Er bedre mønster er dette: re.Pattern = "<!--leftclear-->(.*?)<!--rightclear-->" MEN... ellers er jeg i øvrigt enig - brug InStr() og Mid() som vist i anden halvdel af smitten1's kode-eksempel.
23. november 2007 - 10:20
#5
Hvis der er linieskift i den tekst der skal fanges, så duer punktum ikke som wildcard Hvis du ikke har en Response.Write str2, så udskriver den heller ikke noget
23. november 2007 - 10:33
#6
str2 = Mid(str, startpos+12, stoppos-startpos-12) +/- 12 er længden på starttagget, så det skal ændres til 16, hvis jeg kan tælle rigtigt
23. november 2007 - 10:33
#7
Linjeskift bør (IMHO) klares med en ekstra linje kode: re.Multiline = True
23. november 2007 - 10:37
#8
Multiline ændrer funktionaliten af ^ og $, ikke på punktum
23. november 2007 - 10:44
#9
dokumentationen bruger [\s\S] for at matche alle tegn, da det ikke er muligt med RegExp at ændre på punktummets egenskaber
25. november 2007 - 12:20
#10
23/11-2007 10:44:22> Det må jeg give dig ret i. Det er en af de mange steder hvor at regex-varianten afhænger at det valgte programmeringssporg.
27. februar 2008 - 15:20
#11
Smitten: du skal have dine point ;-) smid et svar så den kan blive lukket.
Kurser inden for grundlæggende programmering