【コンピュータ】正規表現で最短一致させる方法

一流の編集者たるもの、原稿の整形にちんたら打って、消して、なんてやっていられません。正規表現なる武器を使って一気に整形、字句統一、といきたいものです。

私の愛用するテキストエディタは「秀丸」ですが、秀丸だと最短一致がうまくいかないことが多いんですね。たとえばこんな感じです。

Regular_expression_01

こんな文章で、「」を【】となるようにしてみましょうか。検索パターンは、

「(.+)」

置換パターンは、

【¥1】

でしょうか。ちなみに、検索パターンの.+は1文字以上の任意の文字、()は置換時に参照できるようにするためのグループ化です。置換パターンの¥1は検索パターン中の()を順番に参照します。

さっそくやってみましょう。えいや!

Regular_expression_02

なんだか変です。最初の「正規表現」にマッチして欲しいのに、あとの「楽」まで巻き込まれています。どうやら、最短一致を期待したのに、最長一致(もっとも長くマッチするものを選択)になっているようです。

残念ながら、秀丸では最短一致を優先するようなオプションはありません。

ではどうしたらよいのでしょう?いったん検索をキャンセルして、手動で入力、置換するしかないのでしょうか?それだと効率が悪くて、正規表現を使う意味はあまりないですね(検索だけでも!という意見はありますが)。

これを解決するには、検索パターンをちょっと工夫してやればよいようです。ちょっと考えれば普通の方法なのですが、なかなか気付かないものです。

「([^」]+)」

ムム、ちょっと複雑になりましたね。ちょっと顔文字のようにも見えますが。

最初のと違うのは、+の前です。[ ]で何か括られています。[ ]は文字クラスといい、特定の文字の集合を表せます。この場合、」(閉じ括弧)が入っていますから、閉じ括弧という文字の集合(1文字だけですけど)になりますが、その前に^が付いており、これですと「閉じ括弧以外」になります。

ちょっと複雑ですが、閉じ括弧以外の文字のつながり、ということになります。これで検索をやり直してみましょう。

Regular_expression_03

おお!うまくいったではないですか。

このように、パターン検索を上手に使うと、括弧の種類をすべて変えてしまったり(この場合は個別に検索して置換すればいいじゃないかという話もありますが)、さらに別の文字で挟む、なんてことが簡単になります。

今回は、正規表現は便利さ!といった当たり前の話ではなく、最長一致しかできないソフトでもパターン指定で最短位置が可能になる、というお話でした。少しでも多くの編集者の役に立つとよいのですが(そんなに人がいないって!)。

コメント

  1. ジャワカ零 より:

    久しぶりです。
    わたしも、簡単なものしか使っていませんがマクロは利用しています。
    DOSの頃は、VZ EDITORを愛用してたのですが、WIN環境になってからWZ EDITORに乗り換えました。
    しかし、今市馴染めずその頃から評判の良かった秀丸エディタに乗り換えてからは、ずっと使っていますが軽くて良いですね。
    「秀丸メール」もすごくいいので、「鶴亀メール」の時からのお気に入りです。テキストに印刷には当然「秀丸パブリッシャ」です。(^^ゞ

  2. なおさん より:

    ジャワカ零さん、こちらこそお久しぶりです。
    VZ派ですか!私のDOS時代はMIFESでした。
    OS/2からWindowsにかけては、秀丸エディタを愛用しています。
    もうかれこれ20年近いですかね。
    ですから今さら他のエディタに乗り換えられません!
    ちなみに、「秀」シリーズでは「秀Term」を一時期愛用していました。パソコン通信の衰退とともに使わなくなりました…。