Как использовать регулярные выражения для отступа кода в блокноте ++

например у меня есть следующий код

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

Строки начинаются с! знак, который является строкой комментариев в Фортран.Я хочу, чтобы эти строки комментариев имели тот же отступ, что и их предыдущий отступ.

То есть я хочу этот формат

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

Я хочу сделать это в блокноте ++ с помощью регулярных выражений. Но если есть лучший выбор, не стесняйтесь ответить.

Вот что я пробовал: заменить^(\s*)(.*?\r\n)\s*\! какСтроки начинаются с2$1!, Однако это производит

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

Есть еще две строки не правильно. Кажется, что хотя картина^(\s*)(.*?\r\n)\s*\! соответствует этой строке, однако, он просто пропускает ее, поскольку движок регулярных выражений уже соответствует предыдущим строкам.

Мой вопрос, как решить эту проблему с помощью регулярных выражений?

Ответы на вопрос(2)

Ваш ответ на вопрос