TravoniMedlem sedan okt. 20041 556 inlägg Jag vill med regexp hitta det fetmarkerade i texten (med matches)
Hur gör jag ett sådant mönster?
www.mff.se/nyhet.asp?Id=2646&KomFran=FS
www.mff.se/nyhet.asp?Id=2646
...alltså igentligen så skulle det kunna stå vad som helst efter &-tecknet och ändå "ignoreras" så att säga.
ex. www.mff.se/nyhet.asp?Id=2646&vad_äter_bävern=snö
@ndersMedlem sedan juni 200032 969 inlägg Varför ska du använda regexp till det överhuvudtaget?
foo = request.querystring("id")
TravoniMedlem sedan okt. 20041 556 inlägg
@nders skrev:
Varför ska du använda regexp till det överhuvudtaget?
foo = request.querystring("id")
Det var ju gulligt tänkt, men jag skall "skrapa" en viss sida som ligger på annans server vettu. ;)
gjorde om den lite:
Function myQueryString(LinkName, Target)
Dim myMatch, Match
With New RegExp
.IgnoreCase = True
.Global = True
.Pattern = "[\?\&]([\w\d ]*)\=([\w\d ]*)"
Set myMatch = .Execute(LinkName)
End With
if myMatch.Count > 0 Then
For Each Match In myMatch
If LCase(Match.SubMatches(0)) = LCase(Target) Then
myQueryString = Match.SubMatches(1)
Exit For
End If
Next
End If
End Function
Response.write myQueryString("hej.asp?he=asd&bob=hej","he") ' Kommer att skriva ut 'asd'
TravoniMedlem sedan okt. 20041 556 inlägg Tack voigtann1...och ni andra!
Det var just en sådan qs-parser jag behövde.
En liten notis bara:
[\w\d ] är väl ekvivalent med [\w ] eftersom att \w innefattar även 0-9?! eller har jag fel?
(Mina tester talar för min simplifiering... :))
Match a single character that is a "word character" (letters, digits, etc.)
Så du har rätt där ;)
TravoniMedlem sedan okt. 20041 556 inlägg En annan fråga, varför hakparenterser?
Skulle det inte funka med: \?\&(\w *)\=(\w *)
Nej... då du kommer då söka på:
Ett "vilket tecken som helst" + sen " " 0 to Unlimited. Men om vi kapslar in det []
så är det något av de som är inne i [].
Exempel:
"a "
skulle den träffar hela meningen
medas:
"aa "
skulle den bara träffar
"a "
Citat från RegExBuddy:
Match the regular expression below and capture its match into backreference number 1 «([\w ]*)»
Match a single character present in the list below «[\w ]*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
A word character (letters, digits, etc.) «\w»
The character “ ” « »