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.
5 svar · 309 visningar · startad av M@rtin
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.
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.
Eller så kan man slänga in dem i ett dictionary. :)
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?
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 åäö...
Funkade finfint!
Tackar!