Avatar billede cpufan Juniormester
07. august 2007 - 17:45 Der er 40 kommentarer og
1 løsning

finde og erstatte forakellige forekomster af ##27¤¤

Hej

Jeg har brug hjælp til noget reg exp.

jeg henter nogle tekster ud fra en database som indholder nogle beskrivelser, og der kan forekomme links til uddybende beskrivelser.
linket er af formen:  ##26¤¤  eller ##03¤¤ eller tilsvarende
altså 2 havelåger#  et tocifret tal, og 2 sole¤
F.eks:  Denne luftmadras er excellent, og holder evigt ##23¤¤

disse links skal erstattes af et klikbart link som så skal have formen:

<a href="26.htm" target="_blank">klik her</a>
<a href="03.htm" target="_blank">klik her</a>
<a href="87.htm" target="_blank">klik her</a> osv.

Det må lige være det rigtige for en regexp.

For hvis det skal laves som en replacefunktion i trad. asp så bliver det sgu noget tung.
Avatar billede nielle Nybegynder
07. august 2007 - 17:55 #1
Hvilket programmeringssprog?
Avatar billede cpufan Juniormester
07. august 2007 - 18:02 #2
nå jeg har fundet af det
Avatar billede cpufan Juniormester
07. august 2007 - 18:02 #3
jeg har bare lavet det som replace i asp
Avatar billede olebole Juniormester
07. august 2007 - 18:03 #4
<ole>

Dim oRegExp, sStr
sStr = "Denne luftmadras er excellent, og holder evigt ##23¤¤"
Set oRegExp = New RegExp

With oRegExp
    .Pattern = "##(\d+)¤¤"
    .IgnoreCase = True
    .Global = True
End With

sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>")
Set oRegExp = nothing

/mvh
</bole>
Avatar billede nielle Nybegynder
07. august 2007 - 18:03 #5
Ok :^)

Du må meget gerne poste løsningen her sådan at andre kan lære af det. :^)
Avatar billede nielle Nybegynder
07. august 2007 - 18:04 #6
Heh :^)
Avatar billede olebole Juniormester
07. august 2007 - 18:04 #7
- selv-he  ;o)
Avatar billede cpufan Juniormester
07. august 2007 - 18:14 #8
<%
str = "Denne luftmadras er excellent, og holder evigt ##23¤¤" 
beskrivelsen = replace(str,"##","<a href=""")
  beskrivelsen = replace(beskrivelsen,"¤¤",".htm"">SE mere HER</a>")
  %>
er sådan jeg lavede den i asp-replace.

men jeg vil benytte olebole's så kan der også modificeres lidt i det hen ad vejen

så jeg laver lige et spgm med point til dig.
Avatar billede olebole Juniormester
07. august 2007 - 18:17 #9
Nej, det behøver du ikke ... jeg har rigeligt i forvejen  =)
Avatar billede olebole Juniormester
07. august 2007 - 18:19 #10
Ups ... jeg glemte da et gåseøje efter href'en! Sådan skal replace'en se ud:
    sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>")
Avatar billede cpufan Juniormester
07. august 2007 - 18:20 #11
den giver fejl på denne linie:

sStr = oRegExp.Replace(sStr, "<a href=""$1.htm" target=""_blank"">klik her</a>")

jeg har så forsøgt med

sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>")

det er dog heller ikke rigtigt
Avatar billede olebole Juniormester
07. august 2007 - 18:21 #12
Ehhhhhhh ...... ?!??!!! Eksperten snupper zq et gåseøje  :)

Der skal være to gåseøjne før og efter attributterne i strengen  ;o)
Avatar billede cpufan Juniormester
07. august 2007 - 18:21 #13
det5 går sgu godt
sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>")
Avatar billede cpufan Juniormester
07. august 2007 - 18:22 #14
ja.... GHrrrr, men det melder den så fejl på alligevel når jeg afvikler siden

jeg har dobbelt efter htm
Avatar billede cpufan Juniormester
07. august 2007 - 18:25 #15
Type mismatch: 'replace'

/shop_include.asp, line 120


som er

sStr = oRegExp.Replace(sStr, "<a href=""$1.htm"" target=""_blank"">klik her</a>")

med dobbelte gåseøjne som det skal være på trods af experten
Avatar billede nielle Nybegynder
07. august 2007 - 18:26 #16
Den med de dobbelte ""-tegn er der et simpelt trick for:

sStr = oRegExp.Replace(sStr, "<a href='$1.htm' target='_blank'>klik her</a>")
Avatar billede olebole Juniormester
07. august 2007 - 18:27 #17
Hvis du skriver dette i en fil og kalder den 'test.vbs', så virker det i hvertfald fint:

Dim oRegExp, sStr
sStr = "Denne luftmadras er excellent, og holder evigt ##23¤¤"
Set oRegExp = New RegExp

With oRegExp
    .Pattern = "##(\d+)¤¤"
    .IgnoreCase = True
    .Global = True
End With

sStr = oRegExp.Replace(sStr, "<a href=""$1.htm" target=""_blank"">klik her</a>")
Set oRegExp = nothing

MsgBox sStr
Avatar billede olebole Juniormester
07. august 2007 - 18:28 #18
nielle >> nuvel, men det er ret kikset i et kodeforum  :)
Avatar billede cpufan Juniormester
07. august 2007 - 18:28 #19
kan man ikke implementere regexp direkte i asp-applicationen?

altså som almindelig vbscript?
Avatar billede olebole Juniormester
07. august 2007 - 18:29 #20
Jamen, det er da ganske almindelig VBScript  =)
Avatar billede cpufan Juniormester
07. august 2007 - 18:30 #21
*G* ja hvad ved jeg - det blev så heller ikke i dag jeg fik lært noget om regexp *G*
Avatar billede nielle Nybegynder
07. august 2007 - 18:30 #22
Jeps, der er en fejl på Eksperten. Det kan vi sagtens blive enige om.

Det jeg mente var bare at folk som regel får det med at sætte "" i en VB Script streng galt i halsen. Og så er versionen med det enkelte ' iøvrigt lidt mere læsevenligt.
Avatar billede cpufan Juniormester
07. august 2007 - 18:34 #23
kan i forklare hvorfor den melder

Type mismatch: 'replace'

på sStr = oRegExp.Replace(sStr, "<a href='$1.htm' target='_blank'>klik her</a>")
Avatar billede nielle Nybegynder
07. august 2007 - 18:36 #24
Hvordan ser hele din kode ud?
Avatar billede cpufan Juniormester
07. august 2007 - 18:37 #25
sStr = rs("beskrivelse")
Set oRegExp = New RegExp

With oRegExp
    .Pattern = "##(\d+)¤¤"
    .IgnoreCase = True
    .Global = True
End With

sStr = oRegExp.Replace(sStr, "<a href='$1.htm' target='_blank'>klik her</a>")
Avatar billede nielle Nybegynder
07. august 2007 - 18:37 #26
Du skal også have en Dim er sted.
Avatar billede cpufan Juniormester
07. august 2007 - 18:38 #27
nå den skal være med? det er fordi den er i et loop, så droppede jeg den
Avatar billede olebole Juniormester
07. august 2007 - 18:39 #28
Du dimmer før loopet
Avatar billede nielle Nybegynder
07. august 2007 - 18:39 #29
Den skal bare være Dim'et udenfor loop'et.

Iøvrigt er det kun Replace-delen som skal være indenfor loopet. Alt andet er for kost-inefktivt. :^)
Avatar billede cpufan Juniormester
07. august 2007 - 18:40 #30
den brokker sig sgu stadig, - nå jeg må kigge dybere
Avatar billede nielle Nybegynder
07. august 2007 - 18:41 #31
Du kan eventuelt give os noget mere kode?
Avatar billede plx Nybegynder
07. august 2007 - 18:42 #32
hvis option explicit bruges, så dim er en nødvendighed, så ville fejlen være en helt anden. Replace kan nok ikke lide indeholdet af din sStr-variabel
Avatar billede olebole Juniormester
07. august 2007 - 18:43 #33
Dim oRegExp, sStr
Set oRegExp = New RegExp

With oRegExp
    .Pattern = "##(\d+)¤¤"
    .IgnoreCase = True
    .Global = True
End With

[LOOP]
    sStr = [ET ELLER ANDET]
    sStr = cStr(sStr)
    sStr = oRegExp.Replace(sStr, "<a href=""$1.htm" target=""_blank"">klik her</a>")
    ' Gør noget med sStr
[/LOOP]

Set oRegExp = nothing
Avatar billede olebole Juniormester
07. august 2007 - 18:43 #34
Njaaahhh  :)
    sStr = CStr(sStr)
Avatar billede cpufan Juniormester
07. august 2007 - 18:44 #35
prøver
Avatar billede nielle Nybegynder
07. august 2007 - 18:45 #36
Prøv lige med dette pattern:

.Pattern = "\#\#(\d+)¤¤"

#-tegnet har en speciel betydning i regex.
Avatar billede cpufan Juniormester
07. august 2007 - 18:47 #37
kors................
det var min cursortype : jeg måtte ikke genbruge recordsettet

jeg havde sStr = rs("blablqa")

men rs("blablqa") var tom anden gang den blev kaldt
Avatar billede olebole Juniormester
07. august 2007 - 18:48 #38
Ja, som sagt, funker det i en alm. *.vbs-fil  ;o)
Avatar billede olebole Juniormester
07. august 2007 - 18:50 #39
- men cpufan, tjek lige strukturen i (07/08-2007 18:43:09). Du bør spare på, hvad du lægger ind i loopet
Avatar billede cpufan Juniormester
07. august 2007 - 18:51 #40
i får tak -
som sagt skal i ha' nogle point så jeg laver et spgm

http://www.eksperten.dk/spm/790665
Avatar billede cpufan Juniormester
07. august 2007 - 18:52 #41
ja tak ole jeg lavet det sådan nu.....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester