◀一般トップへ
  • 4278 正規表現で「行頭以外の特定文字」の表し方を教えて下さい
    • 4279 RE: 正規表現で「行頭以外の特定文字」の表し方を教えて下さい
      • 4285 検索はどうするのですか?
        • 4286 Re:検索はどうするのですか?
          • 4289 感謝!できました!
      • 4288 RE2: 正規表現で「行頭以外の特定文字」の表し方を教えて下さい
  • [4278] 正規表現で「行頭以外の特定文字」の表し方を教えて下さい 渡辺真 2005年02月06日 23:16

    背景(目的):
    「英辞郎」の辞書txtは、行頭の見出し文字の頭と、行中の例文のそれぞれの頭に■が有ります。
    この例文以下を一括削除したいのです。

    暫定案:
    とりあえず、行頭の■「^■」を「▼」に一括置換しておきます。そして、「■から行末までを一括削除しました。

    ベスト案:?
    しかし、直接、「行頭以外の■を特定する方法」があれば、上記のような退避処理は不要です。

    よい方法が有れば、お教え下さい。

    追記:「英辞郎」は、100メガも有るので、このファイルを操作してみると、テキストエディタの実力?(性格)がはっきり出ますね。
    • [4279] RE: 正規表現で「行頭以外の特定文字」の表し方を教えて下さい げんた 2005年02月07日 01:07

      >直接「行頭以外の■を特定する方法」
      置換前: ^(.[^■]*)■.*$
      置換後: $1\r
      でうまく行くようです.
      行頭にマッチしないよう,最初に.で1文字消費させればと思って試してみました.
      置換後の\rは行末$の指定で\r\nの\rも食べられてしまうために入れてあります.
      • [4285] 検索はどうするのですか? 渡辺真 2005年02月08日 22:46

        これぞ正規表現というテクニックですね。有難うございました。
        (私のホームページでも、事例として紹介させていただきます。)

        20分ほどかかって、100メガ中の4万項目を置換できました。
        (なお、ここで書くのははばかられますが、PeggyPadでもやってみたら、こちらは瞬時に置換しました。メモリの使い方など、違うのでしょうね。)

        ところで、教えていただいた正規表現は、前半と後半を分けて取得して、前半だけを書き出すようにしていますよね。
        興味本位の質問ですが、検索で、後半部分だけを検索する方法は無いのでしょうか。
        • [4286] Re:検索はどうするのですか? トーリス 2005年02月09日 01:35

          > 興味本位の質問ですが、検索で、後半部分だけを検索する方法は無いのでしょうか。
          (?!^)■.*
          でどうでしょう?
          • [4289] 感謝!できました! 渡辺真 2005年02月09日 20:35

            有難うございます。
            私の、むじゃき?な好奇心が満たされて、大満足です。

            教えて頂いて、サクラエディタのヘルプを見直すと、
            ◆使える(かもしれない)拡張構文
            (?!パターン) ゼロ幅の否定的な先読み表現

            と有りましした。これは、サクラエディターのアドバンテージですね。
            (私のホームページでも紹介させていただきます。)

            もかさんも、有難うございました。
            もかさんのは、行中の■の、左一文字だけをバッファに入れて書き戻しているのですね。
            (置換は、なぜか、げんたさんか、もかさんの方法しか使えませんね。)

            皆さん、感謝いたします。m(__)m
      • [4288] RE2: 正規表現で「行頭以外の特定文字」の表し方を教えて下さい もか 2005年02月09日 12:08

        ほかの事やっている最中にふと、思いつきました。
        げんたさん原理をカンニングした後ですが。

        置換前: (.)■+
        置換後: $1