サイトアイコン たまプラ通信

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

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

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

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

「(.+)」

置換パターンは、

【¥1】

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

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

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

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

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

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

「([^」]+)」

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

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

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

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

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

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

モバイルバージョンを終了