Toon posts:

[ASP] Regexp en Greedy

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met het volgende probleem:

Ik ben bezig met een stuk tekst aan het zoeken en de tekst bestaat uit:
code:
1
<tussen>tekst<tussen>omschrijving<tussen>


dus heb ik de volgende patroon:
code:
1
(<tussen>)(.*?)(<tussen>)(.*?)(<tussen>)


nu loopt asp te zeuren om een onverwachte bepaler...
dit houdt dus in dat hij maar 1 greedy kan verwerken???
of is er hier een oplossing voor om hem wel met 2 greedies te laten werken?

waar het mij om gaat is dus dat ik uit dat stukje tekst 2 stukjes met behulp van die greedies mee kan nemen in de vervangende tekst...

dus ik wil bijv

code:
1
<tussen>tekst<tussen>omschrijving<tussen>


naar dit omzetten

code:
1
tekst >>> omschrijving


en aangezien er meerdere replacements gebeuren in het script, wil ik dit dus doen met het Pattern en Replace gebeuren van het object Regex zie verder in deze topic voor mijn source code

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
Dim objRegExp, matches, match, i

Set objRegExp = New RegExp

objRegExp.Pattern = "<tussen>(.*?)<tussen>(.*?)<tussen>"
objRegExp.Global = True
Set matches = objRegExp.Execute("<tussen>tekst<tussen>omschrijving<tussen>")

For Each match In matches    
    For i = o To match.SubMatches.Count - 1
        response.write i &  match.SubMatches(i) & "<br>"
    Next
Next
%>

Verwijderd

Topicstarter
In de situatie waarin ik bezig ben geweest was met Replace en daar ging het mis...

ff code erbij pakken

[edit]

de code:
code:
1
2
3
4
5
6
7
8
9
10
11
<%
Option Explicit

Dim objRegexp

Set objRegexp = New RegExp
objRegexp.IgnoreCase = True

objRegexp.Pattern = "<tussen>(*.?)<tussen>(.*?)<tussen>"
Response.Write objRegexp.Replace( "<tussen>stukje<tussen>tekst<tussen>", "$1" )
%>

Verwijderd

Topicstarter
de foutmelding die die geeft is:

code:
1
2
3
Soort fout:
Runtimefout Microsoft VBScript (0x800A139A)
Onverwachte bepaler

  • MrCaBLeGuY
  • Registratie: Februari 2002
  • Niet online

MrCaBLeGuY

powered by yellow bird

here you go:

' *****************************************************************************
' Return Matches As String with Delimiter from Input String
' *****************************************************************************
Public Function FilterString (strInput, strStartString, strEndString, strDelimiter)
Dim objRegExp, objMatches, strItem

Set objRegExp = New RegExp
objRegExp.Global = False
objRegExp.IgnoreCase = True
objRegExp.Pattern = strStartString & "(.*?)" & strEndString

Set objMatches = objRegExp.Execute(strInput)

For Each strItem in objMatches
FilterString = FilterString & strItem.Value & strDelimiter
Next

Set objMatches = Nothing
Set objRegExp = Nothing
End Function

Verwijderd

Topicstarter
en wat kan ik daarmee extra dan ik al kon?

wat ik juist wil is dat ie in de Replacement opgenomen wordt aangezien dit gedeelte waarbij ik de tekst die vervangen moeten worden kan aangeven en wat er uiteindelijk moet komen te staan...

Verwijderd

code:
1
2
3
4
5
6
7
<%
  Dim regEx
  Set regEx = New RegExp
  regEx.Pattern = "<tussen>(.*?)<tussen>(.*?)<tussen>"
  regEx.IgnoreCase = True
  response.write regEx.Replace("<tussen>stukje<tussen>tekst<tussen>", "$1 >>> $2")
%>

dit?!?!?!

[ Voor 0% gewijzigd door Verwijderd op 03-11-2002 20:45 . Reden: hij kon nog simpeler... ]


Verwijderd

Topicstarter
en dat werkt dus niet :-)

dan geeft ie die foutmelding



hmmm jouw regexp werkt wel???? is kijken wat er fout is bij mij dan

tikfoutje (*.?) ipv (.*?)

stom stom 8)7 8)7 |:(

Verwijderd

oude vbscript runtime ofzo want draait als 'n dolle hier..

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
oude vbscript runtime ofzo want draait als 'n dolle hier..
yup... vanaf XP doet de bijgeleverde engine et goed... daarvoor moet je even een update halen van de microsoft site..

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!

Pagina: 1