Hi,
ich steh grad aufm Schlauch.
Ich will nur Strings finden die nicht mitt IMG- beginnen.
Hi,
ich steh grad aufm Schlauch.
Ich will nur Strings finden die nicht mitt IMG- beginnen.
Ich will nur Strings finden die nicht mit IMG- beginnen.
Versuche mal : $aTest = StringRegExp($sFileName, "(?i)^(?!IMG).*", 3)
EDIT : Ich hatte das Minus übersehen, daher also :
$aTest = StringRegExp($sFileName, "(?i)^(?!IMG-).*", 3)
Nachtrag : kleines Testskript
#include <Array.au3>
#include <StringConstants.au3>
Global $g_aFiles = ['img','img-','A-img-','IMG-1000','A-IMG','B-IMG1000','C-IMG-1000']
Global $g_aOK[0], $g_aNotOK[0]
For $i = 0 To (UBound($g_aFiles) - 1)
If StringRegExp($g_aFiles[$i], "(?i)^(?!IMG-).*", $STR_REGEXPMATCH) Then
_ArrayAdd($g_aOK, $g_aFiles[$i])
Else
_ArrayAdd($g_aNotOK, $g_aFiles[$i])
EndIf
Next
_ArrayDisplay($g_aOK, "OK")
_ArrayDisplay($g_aNotOK, "nicht OK")
Alles anzeigen
Gruß Musashi
Hi Tweaky,
in Deinem Beispielskript gibt es keinen String der nicht mit "IMG-" beginnt ...
Das hier funktioniert für mich:
#Region ;************ Includes ************
#include <Array.au3>
#EndRegion ;************ Includes ************
$sFileName = "MRU-987654321"&@CRLF&"IMG-1232343"&@CRLF&"ILG-369852147"&@CRLF&"imf-741852963"
$aTest = StringRegExp($sFileName, "(?m)(?i)^(?!img-)\N*", 3)
_ArrayDisplay($aTest)
LG
Greenhorn
Edit und p.s.: Die Frage ist natürlich auch: Wie liegt der Teststring vor ? Getrennt durch Leerzeichen, Zeilenumbruch, et. ?
In dem Teststring gibt es keine Zeilenumbrüche usw.
Danke euch beiden. Funktioniert.
Ich will nur Strings finden die nicht mitt IMG- beginnen.
Du prüfst die Dateinamen jeweils immer einzeln? Sie sind also nicht aus einem größeren String herauszufiltern?
Warum dann nicht einfach mit einem Not arbeiten? - dann reicht als RegEx ein ganz einfaches ^IMG-.
Das sollte performanter sein als mit lookarounds zu hantieren.
Oder noch viel simpler:
Du prüfst die Dateinamen jeweils immer einzeln? Sie sind also nicht aus einem größeren String herauszufiltern?
Warum dann nicht mit einem Not arbeiten? - dann reicht als RegEx ein ganz einfaches ^IMG-.
Oder noch viel simpler : StringLeft($String, 4) <> "img-"
Stimmt - geht natürlich beides !
If Not (StringRegExp($sFileName, "(?i)^IMG-", $STR_REGEXPMATCH)) Then ...
und
If StringLeft($sFileName, 4) <> "IMG-" Then ...
Ich, und wohl auch Greenhorn, sind aber davon ausgegangen, dass Tweaky den RegEx :
$aTest = StringRegExp($sFileName, "(?i)" & "\A" & "(?<!IMG)" & ".+" & "\z", 3)
_ArrayDisplay($aTest)
lauffähig machen wollte.
Gruß Musashi
Zuerst hatte ich auch StringLeft($String, 4) <> "img-".
Allerdings wollte ich es über StringRegExp löschen, da das eigentliche Pattern noch länger ist.