Stringregexp werte filtern

  • Hallo :)

    ich wollte einen editor erstellen der eine datei erstellt (auf hex basis) die werte aus einer anderen datei bezieht (die werden dann in einer palette dargestellt).
    Das problem dabei ist ich komme mit dem Stringregexp befehl nicht klar ^^

    [autoit]

    $textureset = FileOpenDialog("Lade Texturset",@ScriptDir,"(*.txt)",3)

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

    $texturesetfile = FileOpen($textureset,0)
    $gettiles = FileRead($texturesetfile)
    $gettiles2 = StringRegExp($gettiles,'(?:TextureCount )(\d+)',3)
    _ArrayDisplay($gettiles2)

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

    $gettiles3 = StringRegExp($gettiles,'(?:Start Texture001)(\d+)',3)
    _ArrayDisplay($gettiles3)

    [/autoit]


    ???? :o
    also die textdatei ist so aufgebaut :

    was ich rausfiltern müsste wäre :
    - "D:\YMIR WORK\terrainmaps\G\field\field 01.dds"
    - 5 (5.000000) nur die erst zahl davon

    Einmal editiert, zuletzt von LordKill94 (26. Juni 2010 um 20:55)

  • ich hab den code einfach kopiert und mal getestet... was meinst du?
    viel is nich passiert... da kam ne fünf aus nem array..
    das zweite array failt also..
    '(?:Start Texture001)(\d+)'
    das kann so nich gehn
    Du hast ja den Texturenamen in den RegExp geschrieben
    Sowas passiert nie im quellcode
    du kannst alle namen und alle inhalte in, pro abschnitt, zwei feldern haben

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI

  • wie meinste das =O? ja das erste sollte den TextureCount rauskriegen :) hat es ja auch
    das nächste habe ich nicht richtig gehabt mom ich probier nochmal mom^^

  • den texturecount brauchste nich.. die texturen sollen eindeutige namen haben ne?

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI

  • [autoit]

    #include <Array.au3>
    $sFoD = FileOpenDialog("Lade Texturset", @ScriptDir, "(*.txt)", 3)
    If @error Then Exit

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

    $aRet = StringRegExp(FileRead($sFoD), '(?>Start Texture\d+\s+")([^"]+)"\s+(\d+)', 3)
    For $i = 0 To UBound($aRet) - 1 Step 2
    MsgBox(0, "", _
    $aRet[$i] & @CRLF & @CRLF & _
    $aRet[$i + 1] _
    )
    Next

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

    _Arraydisplay($aRet)

    [/autoit]
  • ty genau das hatte ich gebraucht jetzt muss ich mir jedes teil nochmal extra angucken damit ichs versteh lol :D


  • ty genau das hatte ich gebraucht jetzt muss ich mir jedes teil nochmal extra angucken damit ichs versteh lol :D


    Ich fasse das einfach mal als indirekte Aufforderung zur Erklärung auf.

    Erklärung
    Code
    (?>Start Texture\d+\s+")([^"]+)"\s+(\d+)
    (?> ... ) -> Ist eine sog. Atomic Group. Kleine Angewohnheit von mir, und in vielen Situationen steigert sie die Geschwindigkeit.
    Start Texture -> Sucht nach genau diesem Text
    \d+ -> sucht mindestens eine bis unendlich viele Zahlen.
    \s+ -> sucht mindestens eins bis unendlich viele Whitespaces (Tabs, leerzeichen, zeilenumbrüche)
    " -> sucht nach genau diesem Text
    ([^"]+) -> sucht nach mindestens einem bis unendlich vielen Zeichen, die kein Gänsefüßchen sind, und speichert es in einem Subpattern - Es wird also dieser Teil zur Array-Ausgabe hinzugefügt.
    " -> sucht noch ein Gänsefüßchen
    \s+ -> sucht mindestens eins bis unendlich viele Whitespaces (Tabs, leerzeichen, zeilenumbrüche)
    \d+ -> sucht mindestens eine bis unendlich viele Zahlen, und speichert die in einem Subpattern - Es wird also dieser Teil zur Array-Ausgabe hinzugefügt.
    Code
    (?>Start Texture)


    [Blockierte Grafik: http://i45.tinypic.com/2mexyzr.png]

    Code
    (?>Start Texture\d+)


    [Blockierte Grafik: http://i46.tinypic.com/20f6sl1.png]

    Code
    (?>Start Texture\d+\s+)


    [Blockierte Grafik: http://i49.tinypic.com/2ns9t8i.png]

    Code
    (?>Start Texture\d+\s+")


    [Blockierte Grafik: http://i49.tinypic.com/2iw3813.png]

    Code
    (?>Start Texture\d+\s+")([^"]+)


    [Blockierte Grafik: http://i50.tinypic.com/107q80x.png]

    Code
    (?>Start Texture\d+\s+")([^"]+)"


    [Blockierte Grafik: http://i46.tinypic.com/2wnoeid.png]

    Code
    (?>Start Texture\d+\s+")([^"]+)"\s+


    [Blockierte Grafik: http://i48.tinypic.com/nvb09j.png]

    Code
    (?>Start Texture\d+\s+")([^"]+)"\s+(\d+)


    [Blockierte Grafik: http://i46.tinypic.com/fbgdwi.png]