エディタを使用し、正規表現で特定の文字列から特定の文字列までを指定し削除したい


以下の「処理前」のテキストから、「処理後」のように `D-E-F` から `G-H-I` の前までを指定し削除を行いたいです。

## 処理前

[code]

    A-B-C;hogehogehoge
    D-E-F;fugafugafuga
          piyopiyopiyo
    G-H-I;hogerahogera
    
    A-B-C;HOGEHOGEHOGE
    D-E-F;FUGAFUGAFUGA
          PIYOPIYOPIYO
    G-H-I;HOGERAHOGERA
    ・
    ・
    ・
    
[/code]

## 処理後

[code]

    A-B-C;hogehogehoge
    G-H-I;hogerahogera
    
    A-B-C;HOGEHOGEHOGE
    G-H-I;HOGERAHOGERA
    ・
    ・
    ・
    
[/code]

[Yahoo!知恵袋の投稿](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13108148098)を参考に、`A-B-C`と`G-H-I`をグループ化し以下のように記述したのですが、「見つかりません」と表示されてしまいます。

[code]

    検索する文字列：(A-B-C)[^(G-H-I)]*(G-H-I)
    置換後の文字列：\r\nG-H-I
    
[/code]

検索対象が文字単体の場合は動作するのですが、文字列を単純にグループ化するだけでは不十分なのでしょうか。

この場合、どのように記述するのが適切なのかご教授いただきたいです。

使用ソフトはMeryテキストエディタです。




「Mery テキストエディタ」を使ったことがないので御参考になりますが，Python の記述例を示します（処理前のテキスト: `temp.txt`）。  
正規表現で最長一致ではなく最短一致させるには `*` の代わりに `*?` （`+?` `??`
等も同様）を使います。また，削除したい部分に改行も含まれるので `.` の代わりに `[\s\S]`
（空白文字または空白文字以外の全ての文字）を使う必要があります。

[code]

    import re
    
    with open('temp.txt', 'r') as f:
        before = f.read()
    
    after = re.sub(r'(A-B-C.*\n)[\s\S]*?(G-H-I)', r'\1\2', before)
    print(after, end='')
    
[/code]

[code]

    A-B-C;hogehogehoge
    G-H-I;hogerahogera
    
    A-B-C;HOGEHOGEHOGE
    G-H-I;HOGERAHOGERA
    
[/code]

（追記）  
Mery では `\S` が使えないようなので，代わりに `[^\s]` を使って `[\s\S]` を `(\s|[^\s])`
と書けば置換できました。なお，かっこを増やしたので置換後も `\1\3` とする必要があります。

[![置換の設定画面](https://i.stack.imgur.com/fELWh.png)](https://i.stack.imgur.com/fELWh.png)




「Mery テキストエディタ」を使ったことがないので御参考になりますが，Python の記述例を示します（処理前のテキスト: `temp.txt`）。  
正規表現で最長一致ではなく最短一致させるには `*` の代わりに `*?` （`+?` `??`
等も同様）を使います。また，削除したい部分に改行も含まれるので `.` の代わりに `[\s\S]`
（空白文字または空白文字以外の全ての文字）を使う必要があります。

[code]

    import re
    
    with open('temp.txt', 'r') as f:
        before = f.read()
    
    after = re.sub(r'(A-B-C.*\n)[\s\S]*?(G-H-I)', r'\1\2', before)
    print(after, end='')
    
[/code]

[code]

    A-B-C;hogehogehoge
    G-H-I;hogerahogera
    
    A-B-C;HOGEHOGEHOGE
    G-H-I;HOGERAHOGERA
    
[/code]

（追記）  
Mery では `\S` が使えないようなので，代わりに `[^\s]` を使って `[\s\S]` を `(\s|[^\s])`
と書けば置換できました。なお，かっこを増やしたので置換後も `\1\3` とする必要があります。

[![置換の設定画面](https://i.stack.imgur.com/fELWh.png)](https://i.stack.imgur.com/fELWh.png)

