Wie man Regex benutzt, um Code in Notepad einzurücken ++

zum Beispiel habe ich den folgenden Code

Module MPI
    Use MPI
    !
! MPI info
    If (true) Then
        Print *, ''
! empty line 1
! empty line 2
    End If
    Integer ithread, nthread, ierr
End Module MPI

Die Zeilen beginnen mit! Zeichen, das Kommentarzeilen in fortran ist.Ich möchte, dass diese Kommentarzeilen den gleichen Einzug wie die vorherige Zeile haben.

Das ist, ich möchte dieses Format

Module MPI
    Use MPI
    !
    ! MPI info
    If (true) Then
        Print *, ''
        ! empty line 1
        ! empty line 2
    End If
    Integer ithread, nthread, ierr
End Module MPI

Ich möchte dies in Notepad ++ mit Regex tun. Aber wenn es eine bessere Wahl gibt, antworten Sie bitte.

Hier ist, was ich versucht habe: @ ersetz^(\s*)(.*?\r\n)\s*\! wie$1$2$1!. Es produziert jedoch

Module MPI
    Use MPI
    !
! MPI info
    If (true) Then
        Print *, ''
        ! empty line 1
! empty line 2
    End If
    Integer ithread, nthread, ierr
End Module MPI

Es sind noch zwei Zeilen nicht richtig. Es scheint, dass obwohl das Muster^(\s*)(.*?\r\n)\s*\! stimmt mit dieser Zeile überein, überspringt sie jedoch nur für die Regex-Engine, die bereits mit den vorherigen Zeilen übereinstimmt.

Meine Frage ist, wie man dieses Einrückungsproblem mit Regex löst?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage