webForumDet fria alternativet

Unika RegExp-träffar

ASPur ASP

5 svar · 309 visningar · startad av M@rtin

Medlem sedan dec. 19992 085 inlägg
Frågan#1

Hur gör man om man bara vill plocka ut unika Reg-Exp träffar?

T.ex. om man vill plocka ut alla ord i en sträng som börjar på "a" men om ordet finns flera gånger vill man bara skriva ut det en gång. Har sökt mig fördärvad efter det.

Medlem sedan juni 2004533 inlägg
#2

Det finns inget stöd för det i RegExp-objektet.

Ett sätt är att lägga in de hittade orden i ett recordset så att du kan sortera dem, då kan du ganska enkelt kolla vilka som är lika.

Medlem sedan maj 200010 687 inlägg
#3

Eller så kan man slänga in dem i ett dictionary. :)

Medlem sedan dec. 19992 085 inlägg
#4

Tack då vet jag, det var ju synd.

Men jag vet inte hur man fixar recordsetet.

<%
myString = "Fröken Anna heter egentligen Annbritt men brukar kallas för Anna för att hon tycker det är snyggare!"
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\x20A\w{0,}"
Set myMatches = objRegExp.Execute(myString)
Response.Write "RegExp hittade "&myMatches.Count&"st träffar<br><br>"

For each item in myMatches
  Response.Write item.Value & "<br>" & vbCrlf
Next

%>

Blir inte myMatches ett recordset här?

Medlem sedan maj 200010 687 inlägg
#5
myString = "Fröken Anna heter egentligen Annbritt men brukar kallas för Anna för att hon tycker det är snyggare!"
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\x20A\w{0,}"
Set myMatches = objRegExp.Execute(myString)
Set objRegExp = Nothing

Dim dic
Set dic = Server.CreateObject("Scripting.Dictionary")
dic.CompareMode = 1

For each item in myMatches
  dic(item.Value) = 1
Next

Response.Write "RegExp hittade "&myMatches.Count&"st träffar, " & dic.Count & " unika<br><br>"

Set myMatches = Nothing

For each item in dic.Keys
  Response.Write item & "<br>" & vbCrlf
Next

Set dic = Nothing

Tänk bara på att \w tar med a-z, 0-9 och _. Alltså inte åäö...

Medlem sedan dec. 19992 085 inlägg
#6

Funkade finfint!
Tackar!

137 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)