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
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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