StringReg Hilfe

  • Hallo Zusammen,


    ich habe eine TXT mit Namen im Anhang. Ich will mit String Reg alle Namen aufgelistet bekommen die zwischen

    <Name>

    .........autoit.de/wcf/attachment/9659/

    <Name> abc<\Name>

    .....

    <\Name>

    stehen.


    Der Name im Format <Name>....<\Name> wie in der ersten Zeile steht soll nicht berücksichtigt werden,

    sondern nur die wo das obengennante Format auftaucht.


    Ich hoffe ihr könnt meiner wirren Erklärung folgen.

  • sind die immer allein in einer zeile? wenn ja, dann mach:

    [autoit]

    Local $sData = "", $Array
    If _FileReadToArray($Path, $Array) Then
    For $i = 1 To UBound($Array) - 1
    If Not ($Array[$i] = "<Name>" And $Array[$i] = "</Name>") Then $sData &= $Array[$i]
    Next
    EndIf

    [/autoit]

    das sieht mir start kan websideauswertung aus... (bot ~ naja ein bisschen) ist schließlich fast html ^^

  • Danke ich versuchs.

    Ne ich will aus einer xml Datei von einem Abrechnungsprogramm aus Firma meine Mutter alle Namen haben

  • Spoiler anzeigen

    Global $parameter= FileRead("C:\Namen.txt")
    $Array= StringRegExp($parameter,"(?<=>)(.*\w)(?=<)",3)
    _ArrayDisplay($Array)

    ;~ Local $sData = "", $Array
    ;~ If _FileReadToArray($parameter, $Array) Then
    ;~ For $i = 1 To UBound($Array) - 1
    ;~ If NotNot ($Array[$i] = "<Name>" AndAnd $Array[$i] = "</Name>") Then $sData &= $Array[$i]
    ;~ Next
    ;~ EndIf


    Kannst du nochma kurz drüber schauen wo der Fehler liegt?

  • Keine Ahnung, aber das wäre meine Lösung:

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    $sText = ClipGet()
    $sNamen = StringRegExp($sText, "(?s)<Name>\s*(<Name>.*?<\\Name>)\s*<\\Name>", 1)
    If @error Then Exit
    $aNamen = StringRegExp($sNamen[0], "<Name>(.*?)<\\Name>", 3)
    _ArrayDisplay($aNamen)

    [/autoit]