Hallo,
ich hänge grade bei folgendem Problem:
Spoiler anzeigen
#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]Exit main()
[/autoit] [autoit][/autoit] [autoit]Func main()
Local $sTextErr = "öfajß9{1;43}{23;32}{2;32}{24;3}h8f20"
Local $sTextOk = "{1;43}{23;32}{2;32}{24;3}"
;~ Funktioniert nicht für beide, da +? natürlich den kleinsten Treffer zurückgibt (erkennt aber, dass $sTextErr inkorrekt ist).
Debug(_Coordinate_StringToArray_1($sTextErr), $sTextErr)
Debug(_Coordinate_StringToArray_1($sTextOk), $sTextOk)
;~ Funktioniert nicht für $sTextErr, da keine Anfangs- und Endekennung (erkennt $sTextErr also als korrekt an).
Debug(_Coordinate_StringToArray_2($sTextErr), $sTextErr)
Debug(_Coordinate_StringToArray_2($sTextOk), $sTextOk)
EndFunc ;==>main
Func Debug(Const $asMatch, Const $sTEXT = "")
_ArrayDisplay($asMatch, $sTEXT)
EndFunc ;==>Debug
Func _Coordinate_StringToArray_1(Const $sTEXT)
Local Const $asMatch = StringRegExp($sTEXT, "^(?:{(\d+;\d+){1}})+$", 3)
If @error Then Return SetError(@error, 0, "")
Return $asMatch
EndFunc ;==>_Coordinate_StringToArray_1
Func _Coordinate_StringToArray_2(Const $sTEXT)
Local Const $asMatch = StringRegExp($sTEXT, "(?:{(\d+;\d+){1}})+?", 3)
If @error Then Return SetError(@error, 0, "")
Return $asMatch
EndFunc ;==>_Coordinate_StringToArray_2
Wie aus dem Quellcode hervorgeht, möchte ich die Rückgabe, wie bei UDF 1, muss aber auf Anfang und Ende prüfen...
Wäre dankbar für ein verbessertes Pattern!
MFG