Hej! Hej Jenny! Nja det funkade nog inte så som jag tänkt mig iaf!! Den blir lite tossig på första exemplet, men de övriga verkar fungera:Regular expression??
Finns det nååån som kan hjälpa mig med ett litet problem som jag har?
Jag försöker söka reda på mailadresser i en text o byta ut dem mot denfunnamailadressen
Så här har jag gjort iaf:
Set oRe = New RegExp
' Look for an e-mail address
oRe.Pattern ="^[^'mailto:']((\w+|\w+\.)+@(\w+|\w+\.)+(\w+|\w+\.)+\.([A-Za-z]{2,3}))"
oRe.Global=true
' Get the Matches collection
Set oMatches = oRe.Execute(inpStr)
for each oMatch in oMatches
Response.write(oRe.Replace(inpStr,""&oMatch&""))
Next
Men det funkar inte alls! Om jag tar bort ^[^'mailto:'] hittas mailadresserna, men de som en gång hittats o ersatts med "<a href= etc" kommer att bli ersatta en gång till (det är det jag vill undvika med mailto-strängen ibörjan)
VAD GÖR JAG FÖR FEL??
Tack!!Sv: Regular expression??
I går när jag var på väg hem från jobbet i Nyköping så skrev jag ihop ett uttryck som jag fick fungera rätt OK.
Så här ser det ut:
<code>
' sträng
strText = "Hej min mail är tom@firstdev.com och Anders är anders.waglund@firstdev.com ... yah till min blahoj@firstdev.com skola: tom.svensson@lc.trosa.se tjoboo hej å hopp SLUT!"
' skapande av regexptobjektet
Set objRE = New RegExp
objRE.Global = True
objRE.IgnoreCase = True
objRE.Pattern = ".*?|(\w+|\w+\.)+@(\w+|\w+\.)+(\w+|\w+\.)+\.([A-Za-z]{2,3})"
' skriv ut den nuvarande strängen
Response.Write strText
Set m = objRE.Execute(strText)
For Each Match In m
If Not Mid(LCase(Match.Value), 2, 6) = "a href" Then
strText = Replace(strText, Match.Value, "" & Match.Value & "")
End If
Next
Set objRE = Nothing
' skriv ut den nya strängen
Response.Write "<HR>" & strText
</code>
Detta fungerar ENDAST då e-postadresserna förekommer EN gång, annars så skriver den över sig själv...
Du måste även ha en nyare version av (vet att 5.5 fungerar) Microsoft Scripting Engine, som klarar av non-greedy-uttryck (som .*?) osv...
Lycka till och lev väl,
Tom S. Sv: Regular expression??
Jag vill alltså att man ska hitta flera olika mailadresser i en text o göra de "aktiva" (alltså så att de blir en mailtolänk...).
Åhhh vad less jag blir... Nu har jag skrivit koden så här (använt lite av ditt tom :o) ) :
Function SubMatchTest(inpStr)
Dim oRe, oMatch, oMatches
Set oRe = New RegExp
' Look for an e-mail address
strMail="mailto:"
oRe.Pattern = "(\w+|\w+\.)+@(\w+|\w+\.)+(\w+|\w+\.)+\.([A-Za-z]{2,3})"
oRe.Global=true
' Get the Matches collection
Set oMatches = oRe.Execute(inpStr)
for each oMatch in oMatches
If Not Mid(LCase(oMatch.Value), 2, 6) = "a href" Then
Response.write(oRe.Replace(inpStr,""&oMatch&""))
Response.Write "<br>"
end if
Next
End Function
och inputsträngen är:
"Här kommer en text o den innehåller en emailadress nämligen: jenny_lindroth.lindroth.kalle@kalle.se och här kommer en till jenny_lindroth@KOKKO.se"
och resultatet blir:
Här kommer en text o den innehåller en emailadress nämligen: jenny_lindroth.lindroth.kalle@kalle.se>jenny_lindroth.lindroth.kalle@kalle.se och här kommer en till jenny_lindroth.lindroth.kalle@kalle.se
Här kommer en text o den innehåller en emailadress nämligen: jenny_lindroth.lindroth.kalle@kalle.se>jenny_lindroth.lindroth.kalle@kalle.se och här kommer en till jenny_lindroth.lindroth.kalle@kalle.se
Här kommer en text o den innehåller en emailadress nämligen: jenny_lindroth@KOKKO.se>jenny_lindroth@KOKKO.se och här kommer en till jenny_lindroth@KOKKO.se
Hm inte riktigt som jag tänkt mig ;) Sv: Regular expression??
<code>
x = "Här kommer en text o den innehåller en emailadress nämligen: jenny_lindroth.lindroth.kalle@kalle.se och här kommer en till jenny_lindroth@KOKKO.se o sen blir det mera text o ibland kommer det mailadresser som nu t ex jenny.lindroth@hemma.nu o sen kan det gå ett tag till o då händer ingenting men sen blir det mer mailadresser men man vet inte riktigt när... o då dyker de upp som gubben i lådan na97jlh@student.hig.se"
t = 1
Do
t = InStr(t, x, "@")
If t > 0 Then
radstart = InStrRev(x, " ", t)
radslut = InStr(t, x, " ")
If radslut = 0 Then radslut = Len(x) + 1
Text = Mid(x, radstart, radslut - radstart)
If InStr(Text, "href") = 0 Then
Debug.Print Text
End If
Else
Exit Do
End If
t = t + 1
Loop
</code>
Detta ger:
jenny_lindroth@KOKKO.se
jenny.lindroth@hemma.nu
na97jlh@student.hig.se
Därefter kan man då skriva:
<code>
text = "" & text & ""
</code>
för att de skall bli klickbara...