皆様始めまして。新人の太田と申します。

私は以前、仕事でテキストエディタを使い、数万行ある文章の置換作業をしていました。
置換を繰り返して文章を整形していたのですが、あらゆるパターンや条件があり、困り果てていました。

そこで私は初めて正規表現と呼ばれるものに出会いました。
正規表現を使うと今まで何十回とパターンを出して置換をしていた作業が、1回の置換で対応できて、作業時間も短縮できたことに感動したことを今でも覚えています。

こんな便利な「正規表現」を多くの人にも知ってもらいたいと思いますので、
テキストエディタを使った正規表現について簡単に紹介させていただきます。

正規表現について

正規表現とは「文字列を記号を使って簡単に表現できる仕組み」です。

あまり馴染みのない方もいるかと思いますので1つ例を出します。

例題:下記文字列の中から「j10」が含まれる行を検索する場合、どうやって検索すればよいか?

j10.net
https://www.google.co.jp/
https://www.yahoo.com/
http://j10.net/

上記の例では私は下記のように回答いたしました。

^.*j10.*$

この正規表現を使った場合は次のようにマッチされます。

j10.net
https://www.google.co.jp/
https://www.yahoo.com/
http://j10.net/

このように正規表現を使えばいくつかの文字列から特定の行をマッチさせることができます。
検索だけではなく、置換でも利用することができます。それでは試してみましょう。

検索「^.*j10.*$
置換「test」 (「」は含まない)

test
https://www.google.co.jp/
https://www.yahoo.com/
test

^.*j10.*$に関して説明します。

は文章の先頭
.*は以降全て
$は文章末
を指します。

つまり「j10を含んだ行」ということになります。

このように、正規表現を使えば面倒な置換も一発です。
それでは最後に私が最も利用している正規表現の置換を紹介したいと思います。
例えばこんな文字列があったとします。



バナナ



アップル

スイカ

メロン


イチゴ
オレンジ

いくつか空行やタブ(目には見えませんが)が入っていて、それらを消す場合どうしたらいいか?
もちろん1つずつ手作業で消していくことも出来ますが何千行、何万行になったら時間が掛かります。
そこで、下記の正規表現を使うことで空行やタブを全てマッチしてくれます。

^[\t]*[\r\n]+

\tはタブ
\r\nは改行
*は直前の文字(今回の場合\t)が1個以上、または0個
+は直前の文字(今回の場合\r\n)が1個以上
を指します。

つまり、「改行のみの行とタブと改行の行」を指していることになります。
実際に使うとこのようになります。

検索「^[\t]*[\r\n]+
置換「」

 

バナナ
アップル
スイカ
メロン
イチゴ
オレンジ

無駄な空行やタブを全て消すことが出来ました。このように正規表現を使うことで作業量を劇的に減らすことができます。正規表現を使えばこういった作業も楽になるため、是非覚えて使ってみてはいかがでしょうか?

 

以上、太田がお送りしました!

Koji Ohta

Writer
Koji Ohta
Category
Works
Tag
正規表現