Seite 1 von 1

Frage zu RegularExpression

Verfasst: 23.11.2014 14:16
von Micha122
Hallo,
zunächst mal folgender Code:

Code: Alles auswählen

If CreateRegularExpression(0, "<(div)>.*</\1>")
  
  
  Dim Result$(0)
  
  a = ExtractRegularExpression(0, "<div>Inhalt1</div>FreierText<div>Inhalt2</div>", result$())
  
  MessageRequester("Info", "strings found: "+Str(a))
  
  For k=0 To a-1
    MessageRequester("Info", Result$(k))
  Next
  
Else
  MessageRequester("Error", RegularExpressionError())
EndIf
Leider liefert das Suchmuster "<(div)>.*</\1>") mir nur einen Treffer, und zwar den gesamten String. :oops:

Gewünscht ist die Anzeige von 2 Treffern, also <div>Inhalt1</div> und <div>Inhalt2</div>.

Bin da momentan einfach nur ein bisschen am üben/probieren und würde mich über Hilfe freuen.

Gruß

__________________________________________________
Thread verschoben
Andere Sprachen>Allgemein
23.11.2014
RSBasic

Re: Frage zu RegularExpression

Verfasst: 23.11.2014 14:47
von STARGÅTE
Der *-Operator sucht immer so viel wie möglich ist.
Du kannst ihn genügsam machen, wenn du *? verwendest:

Code: Alles auswählen

If CreateRegularExpression(0, "<(div)>.*?</\1>")
  
  
  Dim Result$(0)
  
  a = ExtractRegularExpression(0, "<div>Inhalt1</div>FreierText<div>Inhalt2</div>", result$())
  
  MessageRequester("Info", "strings found: "+Str(a))
  
  For k=0 To a-1
    MessageRequester("Info", Result$(k))
  Next
  
Else
  MessageRequester("Error", RegularExpressionError())
EndIf


Re: Frage zu RegularExpression

Verfasst: 23.11.2014 16:12
von Micha122
Danke @STARGÅTE genau so wollte ich das haben. :allright:

Gruß

Re: Frage zu RegularExpression

Verfasst: 23.11.2014 16:58
von helpy
Mit .*? gibt es jedoch ein Problem, wenn es verschachtelte div-Elemente gibt. In diesem Fall kann es sein, dass "<div>... <div>... </div>" gefunden wird.

Das sollte zumindest bei der Anwendung beachtet werden.

LG,
Guido

Re: Frage zu RegularExpression

Verfasst: 23.11.2014 18:54
von Micha122
Hallo helpy,
"<div>....</div>" war da jetzt in meinem Beispiel rein zufällig gewählt.
Aber hast schon Recht, ist in der Praxis nicht so ganz "ohne".

Gruß