Frage zu RegularExpression

Für allgemeine Fragen zur Programmierung mit PureBasic.
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Frage zu RegularExpression

Beitrag 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
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Frage zu RegularExpression

Beitrag 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

PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Frage zu RegularExpression

Beitrag von Micha122 »

Danke @STARGÅTE genau so wollte ich das haben. :allright:

Gruß
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: Frage zu RegularExpression

Beitrag 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
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Frage zu RegularExpression

Beitrag 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ß
Barcodes for PureBasic - http://micha122.bplaced.net/
Antworten