StringRegExp Flag 2

  • Hallo Hackergemeinde!

    irgendwie steh ich heute auf dem Schlauch:

    bitte mal mein Muster anschauen, schaff ich es irgendwie, die Zeilen aus dem array $Futter anzeigen zu lassen ohne die Zeilen mit .sic drin, mit der Funktion _ausdruckdrin() (mit der _ausdrucknichtdrin() und dem Flag 2 geht das, ist das nur Zufall??)


    also ein negierter StringRegExp???

    (das Ganze wird schon einiges kompilzierter, nur denk ich - ist es sinnvoller hier gleich zu Zeigen was ich will und vielleicht kann der eine oder andere Neuling hier, dann auch was mit dem Code anfangen, ich weiß, daß das mit weniger Zeilen zu erstellen geht)

    Es Dankt Euch

    German


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; test_147.au3
    ; Probleme mit STringRegExp

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

    #include <string.au3>
    #include <array.au3>

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

    Dim $Futter[6]
    $Futter[0]="VV_BERTA.TXT"
    $Futter[1]="VE_BERTA.TXT.SIC"
    $Futter[2]="VV_OTTO.TXT"
    $Futter[3]="VE_OTTO.TXT.SIC"
    $Futter[4]="VV_REGINA.TXT"
    $Futter[5]="VV_REGINA.TXT.SIC"

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

    _arraydisplay($Futter,"Das ist das Testfutter")

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

    $Ergebnis_Bsp1=''
    $Ergebnis_Bsp2=''
    for $j=0 to Ubound($Futter)-1
    ; Beispiel1, ich will die Zeilen mit VV_
    _Ausdruckdrin($Futter[$j],"(VV_).")
    ; Beispiel2 ; ich will alle Zeilen ohne die .sic
    _Ausdrucknichtdrin($Futter[$j],"(\.SIC)")

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

    Next

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

    msgbox(0,"Beispiel1 ist", $Ergebnis_Bsp1)
    msgbox(0,"Beispiel2 ist", $Ergebnis_Bsp2)

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

    Func _Ausdruckdrin($zeile,$Ausdruck)

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

    if StringRegExp($zeile,$Ausdruck) then
    $Ergebnis_Bsp1=$Ergebnis_Bsp1 & @CRLF & $zeile
    ; msgbox(0,"das ist momentan", $Ergebnis)
    Endif

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

    EndFunc

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

    Func _Ausdrucknichtdrin($zeile,$Ausdruck)

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

    if StringRegExp($zeile,$Ausdruck,2) then
    $Ergebnis_Bsp2=$Ergebnis_Bsp2 & @CRLF & $zeile
    ; msgbox(0,"das ist momentan", $Ergebnis)
    Endif

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

    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von msp-holzwurm (10. November 2008 um 22:26)

  • Hallo BugFix!

    genau das wars: (mein Problem) hab das zwar gerade noch etwas umgebaut, da die Zeile noch länger ist (ich war aber zu faul das alles abzutippen)

    'V(E|V)_[A-Z]*\.[A-Z][A-Z][A-Z][ ]'

    ist jetzt meine (frisch probierte Lösung, also einmal Blank hintendran)

    'V(E|V)_[A-Z]*\.TXT*(?!.)'
    ^^^^
    ist das das Zeilenende???

    Danke & Gruss

    German

    • Offizieller Beitrag

    'V(E|V)_[A-Z]*\.TXT*(?!.)'
    ^^^^
    ist das das Zeilenende???


    Hier mal die Erklärung zum Pattern:

    V - ein V
    (E|V) - gefolgt von einem E oder einem V
    _ - ein Unterstrich
    [A-Z]* - die Buchstaben A-Z beliebig oft
    \. - ein Punkt
    TXT - die Buchstaben TXT
    (?!.) - es darf kein weiteres Zeichen folgen

  • Hallo BugFix!

    nochmals danke, mein [ ] hintendran erfüllt ja auch seinen Zweck, da ja dann eben keine weitere Extension kommen kann. nur das mit dem (?!.)* war mir schleierhaft.

    Funktioniert super.

    Gruß

    German
    PS: wie kann ich das Thema jetzt auf erledigt stellen??