Regular Expression (RegExp): Zeilenende/Zeilenschaltung nicht erkannt

  • Word

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von tamaleus.

    Regular Expression (RegExp): Zeilenende/Zeilenschaltung nicht erkannt

    Hallo zusammen!
    (Hoffe, bin hier im richtigen Forum)

    Ich habe aus anderen Beispielen und Vorlagen folgende Sub in einem Makro erstellt:

    Quellcode

    1. Sub ksaRegExp(strPatternA As String, strPatternB As String)
    2. patt = strPatternA
    3. Set re = CreateObject("VBScript.RegExp")
    4. re.Global = True
    5. re.IgnoreCase = True
    6. re.Pattern = patt
    7. Selection.WholeStory
    8. With Selection
    9. Set mc = re.Execute(Selection.Text)
    10. For Each mi In mc
    11. Selection.WholeStory
    12. Selection.Find.Execute mi.Value, False, False, False, False, False, True, wdFindAsk, False, strPatternB, True, False, False, False, False
    13. Next
    14. End With
    15. Set mc = Nothing
    16. Set re = Nothing
    17. End Sub


    Das funktioniert eigentlich soweit nicht schlecht, allerdings wird beim Aufruf (siehe unten) die Zeilenschaltung beim Suchmuster nicht erkannt und deshalb der gesamte restliche Text gelöscht.

    Text-Beispiel:

    Quellcode

    1. Dies ist die erste Zeile.
    2. Hier kommt eine weitere.
    3. Zeile drei muss bis zum Zeilenende raus.
    4. Hier steht die vierte Zeile, die drinbleiben soll.


    Nun versuche ich die "Zeile drei..." (wobei nur der Anfang der Zeile bekannt ist) aus diesem Text mit Aufruf von

    Quellcode

    1. ksaRegExp "Zeile drei.*", "^p"


    durch eine Zeilenschaltung zu ersetzen.

    Im Manual, welches ich hier gefunden habe, heisst es, dass man mit ".*" (Punkt=beliebiges Zeichen mit Ausnahme von CR!, und Stern=beliebige Anzahl an Vorkommen, quasi den Rest bis zum Zeilenende - in diesem Fall durch eine Zeilenschaltung - ersetzen könne.

    Tatsächlich wird mir aber der ganze folgende Text weggelöscht, also auch die Zeile vier, was nicht erwünscht ist.

    Wer kann mir helfen, am liebsten mit RegExp Zeile drei wegzubekommen, aber NUR diese Zeile?

    Im voraus besten Dank für jeglichen Input!