Nachbildung von preg_match() funktioniert nicht wie beabsich
Verfasst: 21.12.2015 22:19
Hallo!
PHPs preg_match() möchte ich aus Gründen der Praktikabilität nachbilden und kam bisher zu einem Quältext, dessen wesentlichen Teil (selbst lauffähig) ich hier wiedergebe:
Die dritte Zeile mit dem Funktionsaufruf möchte ich sauber abgearbeitet haben; die beiden vorherigen sind nur Vereinfachungen zur Fehlereingrenzung. Der zu untersuchende Text (hier: "Teile(i)") stammt von einem Videobearbeitungsprogramm. Leider wird den Platzhalter \d soviel Text zugewiesen, wie es nur geht und dabei wird auch das x mit aufgenommen. Weiß jemand Rat? Danke!
Gruß
Domino
PHPs preg_match() möchte ich aus Gründen der Praktikabilität nachbilden und kam bisher zu einem Quältext, dessen wesentlichen Teil (selbst lauffähig) ich hier wiedergebe:
Code: Alles auswählen
Dim Teile.s(30)
Dim Auflosung.s(30)
Declare.l PregMatch(Pattern.s, String.s, Array Arr.s(1))
i = 1
Teile(1) = "640x352 [SAR 16:11 DAR 320:121]"
PregMatch("([\d]+)\w([\d]+)", Teile(i), Auflosung())
PregMatch("(\d+)x(\d+)(\s.*)?", Teile(i), Auflosung())
PregMatch("(\d+)x(\d+)(\s+\[(SAR\s+[\d+]:[\d+])?(\s+DAR\s+[\d+]:[\d+])?\])?", Teile(i), Auflosung())
Procedure.l PregMatch(Pattern.s, String.s, Array Arr.s(1))
Define Erg.l
Erg = CreateRegularExpression(0, Pattern)
Debug "PregMatch(): Erg1="+Erg
If Erg
Erg = ExtractRegularExpression(0, String, Arr())
Debug "PregMatch(): Erg2="+Erg
FreeRegularExpression(0)
EndIf
For i=0 To ArraySize(Arr()) : Debug "Arr("+i+")="+Chr(34)+Arr(i)+Chr(34) : Next i
Debug ""
ProcedureReturn Erg
EndProcedure
Gruß
Domino