Seite 1 von 1

Problem mit ReplaceRegularExpression

Verfasst: 28.12.2012 18:58
von True29
hi Grüßt euch,
ich bin erst seit kurzem wieder bei Purebasic geladet war davor bei xprofan falls das hier wer kennt.
Nun versuche ich einen neuen Anlauf und habe gleich ein Problem.

Ich suche nach einer möglichkeit in einem String nach gleichen Kombinationen zu suchen,diese dann zu ersetzen.
als Beispiel

habe ich als String 11 12 3 4 5
dann soll 11 und 12 ersetzt werden als ergebniss soll ich dann 3 3 3 4 5 bekommen.

zweites beispiel.
1 2 11 12 5 hier soll das Ergebniss 1 2 2 2 5 sein.

Hier habe ich schon einmal einen Anfang gewagt nur funktioniert noch leider nicht so wie gewollt.

Code: Alles auswählen

  If CreateRegularExpression(0,"(11|12)")     
  x=0
  For x=1 To 12    
  If Str(x)+Str(x)+Str(x)+Str(x)+Str(x) = ReplaceRegularExpression(0,string,Str(x))    
    Debug "Treffer"
  EndIf
  Debug suchergebniss$    
  
  Next X      
  FreeRegularExpression(0)
  
  Else
    Debug RegularExpressionError()
  EndIf

die Variable String wird so aufgebaut.
string = Str(anzeige(1))+" "+Str(anzeige(4))+" "+Str(anzeige(7))+" "+Str(anzeige(10))+" "+Str(anzeige(13))
in Xprofan sah das ganze so aus:
was auch funktioniert hat.

Code: Alles auswählen

  suchmuster$="(11|12)"

  WhileLoop 1,12,1
    If @Str$(&Loop)+","+@Str$(&Loop)=Translate$(string$,suchmuster$,@Str$(&Loop))
      'Treffer
    endif
 endwhile
Nun hoffe ich einfach mal das jemand eine Idee hat ;)

Re: Problem mit ReplaceRegularExpression

Verfasst: 28.12.2012 20:43
von mk-soft
Am einfachsten mit "ReplaceString(...)"

FF :wink:

Re: Problem mit ReplaceRegularExpression

Verfasst: 28.12.2012 20:50
von mk-soft

Code: Alles auswählen

If CreateRegularExpression(0,"(11|12)")     
  string.s = "1 2 12 11 4 5"
  Debug ReplaceRegularExpression(0,string,"3")   
Else
  Debug RegularExpressionError()
EndIf

Re: Problem mit ReplaceRegularExpression

Verfasst: 28.12.2012 22:48
von True29
nun scheint es zu klappen.

Hatte einen kleinen Fehler deshalb hat es nicht funktioniert :/
danke.