StringRegExp - kurze Hilfe bitte

  • Hi,
    ich habe folgende Zeilen im Zwischenspeicher:

    Code
    Tabelle vom 12.02.2011 - 01 (Mark1989)
    	1
    	0.1
    	0.4
    	1.2
    	15.2
    	7
    	0.11


    (vor den Zahlen ist immer ein Whitespace)


    Nur die Werte möchte ich in ein Array bekommen.
    Also: 1, 0.1, 0.4 usw...

    Mein bisheriger Versuch schaut so aus:

    [autoit]

    $werte = StringRegExp(ClipGet(),"\s(\d.*\b)",3)

    [/autoit]

    Ergebnis:

    Code
    12.02.2011 - 01 (Mark1989
    1
    0.1
    0.4
    1.2
    15.2
    7
    0.11

    Leider wird immer "12.02.2011 - 01 (Mark1989" aus der Überschrift mit übernommen, was ich verhindern möchte.
    Könntet ihr mein Suchmuster bitte korrigieren? Ich habe schon so lange rumgetestet, dass ich da überhaupt nicht mehr durchsteige ;(

    Gruß
    Nasenbär

    5 Mal editiert, zuletzt von Nasenbär (13. Februar 2011 um 15:23) aus folgendem Grund: gelöst, DANKE!

  • So?

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    $sText = ClipGet()
    $sPattern = '\s(\d+?\.?\d*)\b'

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

    $aResult = StringRegExp($sText, $sPattern, 3)
    _ArrayDisplay($aResult)

    [/autoit]
  • Juuhuuuuu... dankeschön! 8o
    Funktioniert super.

    Edit:
    Schade, zu früh gefreut.
    Manchmal gibt es einen Absatz nach der ersten Zeile:

    Code
    Tabelle vom 01.02.2011 - 02 (Steffen W.)
    
    
    	0.5
    	1.6
    	2
    	13
    	0.9

    Ergebnis:

    Code
    2 (Steffen W.)
    0.5
    1.6
    2
    13
    0.9


    Dann wird die Überschrift wieder teilweise übernommen :wacko:

    Gruß
    Nasenbär

    Einmal editiert, zuletzt von Nasenbär (12. Februar 2011 um 21:33)

  • Probier mal folgendes:

    [autoit]

    #include <array.au3>
    $x="Tabelle vom 12.02.2011 - 01 (Mark1989)"&@CRLF& _
    " 1"&@CRLF& _
    " 0.1"&@CRLF& _
    " 0.4"&@CRLF& _
    " 1.2"&@CRLF& _
    " 15.2"&@CRLF& _
    " 7"&@CRLF& _
    " 0.11"
    ;~ $x = ClipGet() ; zum testen der anderen muster

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

    $muster = "[\s\t]{2,}([\d\.]+)+"
    $res = StringRegExp($x,$muster,3)
    _ArrayDisplay($res)

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Oder so ...

    Spoiler anzeigen
    [autoit]


    Opt("MustDeclareVars", 1)

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

    Global $sTest = StringFormat ("%s\r\n\t%d\r\n\t%.1f\r\n\t%.1f\r\n\t%.1f\r\n\t%.1f\r\n\t%d\r\n\t%.2f\r\n", _
    "Tabelle vom 12.02.2011 - 01 (Mark1989)", _
    1, _
    0.1, _
    0.4, _
    1.2, _
    15.2, _
    7, _
    0.11 _
    )

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

    ConsoleWrite ($sTest)

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

    ; Testen auf Integer- oder Gleitkommazahlen bis sechsstelliger Genauigkeit
    Global $aNumbers = StringRegExp ($sTest, "(?:\n\t)(\d+\.?\d{0,6})", 3, 1)

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

    If (IsArray ($aNumbers)) Then

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

    ConsoleWriteArray ($aNumbers, " * aNumbers * ")
    EndIf

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

    Exit (0)

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

    ;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

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

    Func ConsoleWriteArray (ByRef Const $array, $sArrayName = "")

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

    Local $cnColumns
    Local $cnDimension
    Local $cnRows
    Local $cnElements

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

    If (not IsArray ($array)) Then
    ConsoleWrite (StringFormat ("!--- ConsoleWriteArray - Fehler: %s ist kein Array!\n", $sArrayName))
    Return 0
    EndIf

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

    $cnDimension = UBound ($array, 0)

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

    If ($cnDimension > 3) Then
    ConsoleWrite (StringFormat ("!--- ConsoleWriteArray - Fehler: %d\n", $sArrayName, $cnDimension))
    ConsoleWrite (StringFormat ("!--- Max. Anzahl Dimensionen: %d\n", 3))
    ConsoleWrite (StringFormat ("!--- %s - Anzahl Dimensionen: %d\n", $sArrayName, $cnDimension))
    Return 0
    EndIf

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

    ConsoleWrite (StringFormat ("--- Arrayvariable %s\n--- Anzahl Dimensionen: %d\n", $sArrayName, $cnDimension))

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

    $cnRows = UBound ($array, 1)
    $cnColumns = UBound ($array, 2)
    $cnElements = UBound ($array, 3)

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

    Switch ($cnDimension)

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

    Case 1
    ;...
    For $i = 0 To $cnRows - 1

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

    ConsoleWrite (StringFormat ("; %s [%d] = %s\n", $sArrayName, $i, $array[$i]))
    Next
    Case 2
    ;...
    For $i = 0 To $cnRows - 1

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

    For $j = 0 To $cnColumns - 1

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

    ConsoleWrite (StringFormat ("; %s [%d][%d] = %s\n", $sArrayName, $i, $j, $array[$i][$j]))
    Next
    Next
    Case 3
    ;...
    For $i = 0 To $cnRows - 1

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

    For $j = 0 To $cnColumns - 1

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

    For $k = 0 To $cnElements - 1

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

    ConsoleWrite (StringFormat ("; %s [%d][%d][%d] = %s\n", $sArrayName, $i, $j, $k, $array[$i][$j][$k]))
    Next
    Next
    Next
    Case Else
    ;...
    EndSwitch

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

    ConsoleWrite (StringFormat ("----------------------------\n\n", 0))

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

    EndFunc

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

    ;«««««««««««««««««««««««««««««««« End Of File «««««««««««««««««««««««««««««««««

    [/autoit]


    Gruß
    Greenhorn