Regular Expression

  • Hallo,

    ich habe es wirklich versucht aber ich kommt mit den regular expression nicht klar.

    ich habe eine Liste (ca. 72000) mit folgenden werten:
    "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"

    ich brauche den fetten Filenamen.. der Pfad ist natürlich immer anders.

    vielleicht gibt es ja eine einfachere variante, aber ich dachte mit regular expression wäre es am einfachsten ;( Wenn man weiß wie :D

    ein tipp wäre sehr nett.

    Danke
    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    Einmal editiert, zuletzt von franzp (17. November 2009 um 16:18)

  • also wenn das was du brauchst immer die Anführungszeichen außenrum haben dann wirst mit _Stringbetween sehr viel schneller zum ziel kommen. oder stringsplit könnte auch von nützen sein.

    Ansonsten könnte ich dir mit dir nur noch den Link zum RegExpTutorial von Bugfix geben : http://www.bug-fix.info/PathCheck.htm

  • Hi,

    so gehts auch:

    [autoit]

    $string = """Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip""" & " -d " & """Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"""
    $retstring = StringLeft ($string, StringInStr ($string, " -d"))
    MsgBox (0,"", $retstring)

    [/autoit]

    ;-))
    Stefan

    P.S: Gffs. springt noch ein StrinRegExp Guru mit auf den Zug.....

  • [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    $array = StringRegExp($string, '"(.*?)"\s*-d\s*".+"', 3)
    _ArrayDisplay($array)

    [/autoit]

    Aber SRE ist nicht unbedingt besser als String-Funktionen (manchmal langsamer).

  • Danke euch allen!

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

    • Offizieller Beitrag

    SRE ist immer langsamer, das ist m.E. die schnellste Stringvariante:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'

    [/autoit] [autoit][/autoit] [autoit]

    $a1 = StringSplit($string, @CR, 2)
    Local $aPath[UBound($a1)]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($a1) -1
    $aTmp = StringSplit($a1[$i], '.', 2)
    $aPath[$i] = StringStripWS(StringReplace($aTmp[0], '"', ''), 1) & ".zip"
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($aPath)

    [/autoit]
  • Wobei bei mir SRE immer noch schneller ist:

    Spoiler anzeigen
    [autoit]

    $time1 = TimerInit()
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    $a1 = StringSplit($string, @CR, 2)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) - 1
    $aTmp = StringSplit($a1[$i], '.', 2)
    $aPath[$i] = StringStripWS(StringReplace($aTmp[0], '"', ''), 1) & ".zip"
    Next
    $time1 = TimerDiff($time1)

    [/autoit] [autoit][/autoit] [autoit]

    $time2 = TimerInit()
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    $array = StringRegExp($string, '"(.*?)"\s*-d\s*".+"', 3)
    $time2 = TimerDiff($time2)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "", $time1 & ' ' & $time2)

    [/autoit]
    • Offizieller Beitrag

    Genau das wollte ich auch gerade schreiben.
    Bei mir ist SRE auch schneller:

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    ; Zeit ab hier
    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CR, 2)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) -1
    $aTmp = StringSplit($a1[$i], '.', 2)
    $aPath[$i] = StringStripWS(StringReplace($aTmp[0], '"', ''), 1) & ".zip"
    Next
    ConsoleWrite('Variante 1 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aPath)

    [/autoit] [autoit][/autoit] [autoit]

    ; Zeit ab hier
    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    ConsoleWrite('Variante 2 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aOut)

    [/autoit]
  • wobei es seeehr knapp wird^^

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    ; Zeit ab hier
    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) -1
    $aPath[$i] = stringmid($a1[$i],2,stringinstr($a1[$i],".zip")-2)& ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    ConsoleWrite('Variante 1 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aPath)

    [/autoit] [autoit][/autoit] [autoit]

    ; Zeit ab hier
    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    ConsoleWrite('Variante 2 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aOut)

    [/autoit]
    • Offizieller Beitrag

    Hmmm...irgendwas stimmt mit der Messmethode nicht:

    wenn man das so anordnet:

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    ; Zeit ab hier
    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) -1
    $aPath[$i] = stringmid($a1[$i],2,stringinstr($a1[$i],".zip")-2)& ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    ConsoleWrite('Variante 1 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aPath)

    [/autoit] [autoit][/autoit] [autoit]

    ; Zeit ab hier
    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    ConsoleWrite('Variante 2 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aOut)

    [/autoit]


    erhalte ich diese Ergebnisse:

    Code
    Variante 1 = 0.164329138375606
    Variante 2 = 0.238035590147018


    so weit, so gut. Du hast das gut optimiert, Andy.
    Aber, wenn man das Ganze umdreht:

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    ; Zeit ab hier
    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    ConsoleWrite('Variante 2 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aOut)

    [/autoit] [autoit][/autoit] [autoit]

    ; Zeit ab hier
    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) -1
    $aPath[$i] = stringmid($a1[$i],2,stringinstr($a1[$i],".zip")-2)& ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    ConsoleWrite('Variante 1 = ' & TimerDiff($iTimer) & @CR)
    _ArrayDisplay($aPath)

    [/autoit]


    dann kommt das raus:

    Code
    Variante 2 = 0.0853867091559524
    Variante 1 = 0.383837423705767


    Wie kann das sein?

  • Teste doch öfter, wenn man nur einmal testet sind die Werte meistens falsch,

    [autoit]

    Global $StandStringDiff = 0, $StringRegExpDiff = 0

    [/autoit][autoit][/autoit][autoit]

    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'

    [/autoit][autoit][/autoit][autoit]

    For $j=1 To 100
    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) -1
    $aPath[$i] = stringmid($a1[$i],2,stringinstr($a1[$i],".zip")-2)& ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    $StandStringDiff += TimerDiff($iTimer)
    Next

    [/autoit][autoit][/autoit][autoit]

    For $j=1 To 100
    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    $StringRegExpDiff += TimerDiff($iTimer)
    Next

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"Speedtest", "StringRegExp Variante hat: "&$StringRegExpDiff/100&" Standart String Funktionen: "&$StandStringDiff/100)

    [/autoit]

    Wenn du es hier umdrehst bleiben die Werte trotzdem gleich.

    Gruss Greek

  • Das "Problem" unterschiedlicher Laufzeiten von Funktionen je nach Position innerhalb des Scriptes hatte ich auch schon einige Male. Was ich aber schon herausgefunden habe: wenn man prozessor-/plattenintensive (externe) Anwendungen VOR dem Scriptaufruf startet, dann bekommt man in einigen Fällen völlig seltsame Ergebnisse.
    Beim mehrmaligen Start aus Scite heraus sind Geschwindigkeits-Abweichungen von bis zu Faktor 10 keine Seltenheit, seltsamerweise scheint es auch umgekehrt Möglichkeiten zu geben, daß Scripte SCHNELLER laufen als normalerweise. Dabei ist die Geschwindigkeit durchgehend schneller oder langsamer (auf die mittlere Geschwindigkeit bezogen) über die gesamte Scriptlaufzeit.
    Mir ist das beim Testen meines Sudoku-Lösers erstmals richtig aufgefallen. Bei Laufzeiten von einer halben Stunde und mehr sind die schon bekannten "Unzulänglichkeiten" der Timer-Funktionen zu vernachlässigen. D.h. wenn bei einer rechenintensiven Anwendung ein "ungünstiger" Start(zeitpunkt?!) erwischt wurde, dann braucht die Anwendung länger als normalerweise....

    Greek

    Zitat

    Teste doch öfter, wenn man nur einmal testet sind die Werte meistens falsch,

    stimmt, aber genau dein Beispiel "bremst" (je nach äußerem Einfluß) mal die eine, mal die andere Schleife aus! Eigentlich sollte man beide Funktionen in EINE gemeinsame Schleife packen und die einzelnen Laufzeiten dann addieren.

  • Btw, bauf meinem Rechner gewinnt immer das regex..

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    $string = '"Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d "Z:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"A:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d"Y:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"B:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"F\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"C:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"D:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip" -d "T:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"' & @CRLF & _
    '"E:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\BRAN52d039r1.zip"-d"G:\BRAN\BRAN\Docfile\BRAN29-58\BRAN52\"'
    ; Zeit ab hier

    [/autoit] [autoit][/autoit] [autoit]

    $x = 0
    $y = 0

    [/autoit] [autoit][/autoit] [autoit]

    For $j = 1 To 100
    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    $x += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) - 1
    $aPath[$i] = StringMid($a1[$i], 2, StringInStr($a1[$i], ".zip") - 2) & ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    $y += TimerDiff($iTimer)
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite('Variante 1 (regex )= ' & $x & @CR)
    ConsoleWrite('Variante 2 (string)= ' & $y & @CR)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $x = 0
    $y = 0

    [/autoit] [autoit][/autoit] [autoit]

    For $j = 1 To 100
    $iTimer = TimerInit()
    $a1 = StringSplit($string, @CRLF, 3)
    Local $aPath[UBound($a1)]
    For $i = 0 To UBound($a1) - 1
    $aPath[$i] = StringMid($a1[$i], 2, StringInStr($a1[$i], ".zip") - 2) & ".zip";StringStripWS(Stringtrimleft($aTmp[0],1), 1) & ".zip"
    Next
    $y += TimerDiff($iTimer)

    [/autoit] [autoit][/autoit] [autoit]

    $iTimer = TimerInit()
    Local $aOut = StringRegExp($string, '"(.+?)".+', 3)
    $x += TimerDiff($iTimer)
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite('Variante 1 (regex) = ' & $x & @CR)
    ConsoleWrite('Variante 2 (string)= ' & $y & @CR)

    [/autoit]

    unabhängig von der Position innerhalb des Scriptes.

    /*EDIT*/ Sackzement ?( , soeben das obige Script auf einem 1,4 GHz PIII getestet....beim ersten Start des Scriptes waren beide Varianten gleich schnell!! Bei jedem weiteren Start war das regex doppelt bis dreimal so schnell.....

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (18. November 2009 um 14:00)

  • Wär cool wenn du noch schreiben würdest wie du es im endeffekt gelöst hast.
    falls du es gelöst hast ^^

    hat sich ergeben, dass die Liste nicht komplett war. Deswegen sind aus dem aus 70000 Sätzen jetzt 120000 geworden. Ich habe keine der beiden Methoden verwendet, weil ich mir diesmal gleich die richtige Formatierung der Liste erstelle.

    Aber interessant mit den Laufzeiten...

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---