Seite 1 von 1

RegEx: Nur Treffer anzeigen (.*)

Verfasst: 29.10.2020 02:17
von Delle
Hallo,

ich habe mir folgenden Code zusammenkopiert:

Code: Alles auswählen


suchstring.s="mid"+Chr(34)+Chr(32)+"decimals"+Chr(61)+Chr(34)+"4"+Chr(34)+Chr(62)+"(.*)"+Chr(60)+Chr(47)+"span"+Chr(62)

; Beispiel innerhalb inhalt.s -> field="mid" decimals="4">100,1000</span> €

If CreateRegularExpression(0, suchstring.s)
    If MatchRegularExpression(0, inhalt.s)
      
      Debug "Treffer"
      
      Dim Result$(0)
    NbFound = ExtractRegularExpression(0, inhalt.s, Result$())
    For k = 0 To NbFound-1
      Debug Result$(k)
    Next
      
    Else
      Debug "Nix"
    EndIf
  Else
    Debug RegularExpressionError()
  EndIf
Funktioniert prima, zeigt mir aber den kompletten Match an, ich will aber eigentlich nur den Wert zwischen (.*), sprich im obigen Beispiel diese 100,1000

Muss ich das etwa selber mittels Stringfunktionen extrahieren?!

Danke!

Re: RegEx: Nur Treffer anzeigen (.*)

Verfasst: 29.10.2020 09:20
von STARGÅTE
Guck dir mal RegularExpressionGroup() an

Re: RegEx: Nur Treffer anzeigen (.*)

Verfasst: 29.10.2020 10:13
von NicTheQuick
Ich empfehle diese Seite sehr um mit Regex-Expressions herumzuspielen. Sie bietet außerdem noch allem Erklärungen: https://regex101.com/

Re: RegEx: Nur Treffer anzeigen (.*)

Verfasst: 29.10.2020 18:56
von ccode_new
Hallo Delle,

die RegEx-Bibliothek ist cool, aber auch sehr umfangreich.

Code: Alles auswählen

inhalt.s = ~"field=\"mid\" decimals=\"4\">100,1000</span> €"

If CreateRegularExpression(0, ">(.*)<")
  If ExamineRegularExpression(0, inhalt)
    While NextRegularExpressionMatch(0)
      Debug RegularExpressionGroup(0, 1) ;coole nützliche Funktion
    Wend
  EndIf
Else
  Debug RegularExpressionError()
EndIf
Oder z.B so:

Code: Alles auswählen

inhalt.s = ~"field=\"mid\" decimals=\"4\">100,1000</span> €"

If CreateRegularExpression(0, "(\d)+,(\d)+")
  If MatchRegularExpression(0, inhalt)
    
    Debug "Treffer"
    
    Dim Result$(0)
    NbFound = ExtractRegularExpression(0, inhalt, Result$())
    For k = 0 To NbFound-1
      Debug Result$(k)
    Next
    
  Else
    Debug "Nix"
  EndIf
Else
  Debug RegularExpressionError()
EndIf