本日は、愛用者も多い(?)サクラエディタの使い方をご紹介したいと思います。

みなさんは、文章を書くときどのテキストエディタを使っていますか?Windows標準のメモ帳でもいいですが、テキストエディタを使いこなせるようになれば、日々の仕事が楽になります。

特に、サクラエディタは、うまく使いこなせれば文章の加工を楽に行うことができます。

正規表現とは何か?を知りたい方はこちら

この記事では、サクラエディタでの正規表現の使い方の一例を説明しています。正規表現の一覧など、正規表現そのものについて知りたい方は、「正規表現の基本的な使い方を一覧にした」のほうが参考になるかと思います。なお、本ページを参考に作業を進める方も、正規表現の一覧を見ながら進めたほうが作業がしやすいかと思います。ぜひ、以下のページを見ながら進めてください(別タブで開きます)

サクラエディタで、正規表現を使いこなす

文章の加工を楽に行うもの、それが正規表現です。

サクラエディタには置換機能がありますが、置換に正規表現を使用できます。

WordなどOfficeソフトでも、正規表現を使うことができますが、サクラエディタではより多くの機能を使うことができ、うまく利用すれば、さまざまな加工ができます。

置換のウィンドウの開き方は、サクラエディタ上でCtrl+rです。開いたウィンドウで「正規表現」にチェックをつけると、正規表現を利用した置換ができます。

例えば、「2018年1月1日」を「2018/1/1」に一括で変えることもできます。

早速、Ctrl+rでウィンドウを開いてください。「置換」と書かれたウィンドウが表示されればOKです。

それでは、サクラエディタの正規表現で、便利な3つの使い方を紹介したいと思います。

・無駄な空行を消す

・特定の文字以降の文字をすべて消す(必要な文字を抜き出す)

・日付の形式を変える(例:「2018年1月1日」を「2018/1/1」に)

たくさんの改行や空行をすべて消したいとき

文章によっては、「不必要に多い改行」があるかもしれません。例えば、Webページからコピーしてきた文章にたくさんの改行があった、などです。

これは、以下のように置換することで、空行をすべて削除することができます。

置換前:^\r\n
置換後:空欄(何も書かない)

^\r\nが何を表しているのかを説明します。

まず、正規表現において ^ とは、行の先頭を指します。同様に $ は、行の末尾を指します。

次に、\r\nですが、これは改行を指します。

※面倒なことに、改行コードだけで3種類あります。
サクラエディタでは、末尾の矢印の書き方で、どの改行コードかが分かります。

・左向き矢印「←」
・下向き矢印「↓」
・鉤型矢印「←↓」(なんかこんな形)

それぞれ、正規表現で表すと、
・左向き矢印「←」:\r
・下向き矢印「↓」:\n
・鉤型矢印「←↓」:\r\n

ちなみに、サクラエディタ上でWindowsのEnterキーで改行すると、\r\nになります。

Wordなどからコピペしてきたときのみ、\r\r\nが現れます。

まとめると、「先頭が改行(=改行しかない、空行)」をすべて空白に置換することにより、空行がすべて削除される、ということです。

改行や空行を削除 実行前

これが、

改行や空行を削除 実行後

こうなります。

括弧の中身など、特定の文字以降の文字をすべて消したいとき

例えば、以下の文章があります。

パターン1

山田 太郎(やまだたろう)
鈴木 一郎(すずきいちろう)
田中 花子(たなかはなこ)

送り仮名に当たる部分(「(」以降をすべて削除したい、というときに使えます。)

また、以下のようなものがあります。htmlのソースページから情報を取得すると、このようなものが現れるかもしれません。

パターン2

<tag1><tag2><tag3><tag4>山田 太郎</tag4></tag3></tag2></tag1>
<tag5><tag6><tag7><tag8>鈴木 一郎</tag8></tag7></tag6></tag5>
<tag9><tag10><tag11><tag12>田中 花子</tag12></tag11></tag10></tag9>

↑の人名にあたる部分だけを抜き出したい場合にも使えます。

これらの例では3行しかありませんが、実際に300行くらいあると、名前だけを取り出すのは手間ですね。そういう場合にも正規表現が使えます!

パターン1
置換前:([\S|\s]+$
置換後:空欄(何も書かない)

特定の文字以降の文字削除 実行前

これも、「([\S|\s]+$」が何を表しているかを解説します。

まず、は文字そのものを指しています。正規表現ではありません。

パターン1の例だと、「」は各文に1つしか使われていないので、「」だけで、どの箇所かを特定できます。

次に、[\S|\s]+ですが、細かく分けます。

\Sは、「空白以外の任意の1文字」を指します。次に、\sは、「空白である任意の1文字」を指します。

両者の違いは、sが大文字か小文字かです。

さらに、[]で囲って、|で区切ると、「囲みの中のどちらか」という意味になります。つまり、[\S|\s]だと、「空白以外の任意の1文字」もしくは「空白である任意の1文字」ということになります(つまり、文字ならなんでもいい、ということ)

最後に、+は、「前の正規表現を1回以上繰り返す」という意味です。つまり、[\S|\s]+「空白以外の任意の1文字」もしくは「空白である任意の1文字」が1回以上続く文字列ということになります。

これを$(=文の末尾)まで繰り返しているということです。

これらをすべて空白に置換すると、「」以降、文の末尾まで一括で削除されるわけです。

特定の文字以降の文字削除 実行後

※「(」が複数あっても大丈夫です。なぜなら、「(」という文字も、[\S|\s]+の中に含まれるからです。

そのため、最も左側の「(」から見て、それ以降の文字列をすべて空欄に置き換えるため、「(」は複数あっても大丈夫です。

ただし、そのせいで置換に苦労することがあります。それが次のパターン2です。

ちなみに、正規表現で最もよく使われる「.」(任意の1文字)との違いですが、以下のように違います。

.:改行文字を含まない
[\S|\s]:改行文字を含む

[\S|\s]+$ はドット1文字と全く同じ意味なのですが、[\S|\s]とドットの違いを知っていると、役立つときが来る…かもしれません。

上記の例ではドットだけでいいですが、ぜひ覚えてみてください。

正規表現をそのまま使えないパターン

パターン2も考え方は同じですが、この場合は少し工夫が必要です。今回は一発で置換しようとすると、残したい氏名まで消えてしまうので、このままでは使えません。

先ほどの「([\S|\s]+$」のように、文字を直接指定している場合、該当する文字が複数あると、

範囲が最も広くなるように参照する

という特徴があります(最長一致 Greedy Matchingと言います)。

どういうことかというと、「<[\S|\s]+」と書くと、文の先頭に”<“があるので、ここから後ろをすべて参照します。

理由は、<“\Sに含まれるためです。 また、「[\S|\s]+>」と書くと、末尾の”>“まで参照します。

ではどのようにするかというと、後ろから消してあげましょう。2回に分けます。

※本当は、「最短一致」を使えば一発で簡単に消すことができます。ただし、基本的なルールである「できるだけ長く探す」ということは知っていただきたいため、以下では最短一致を使わずに行っています。

最長一致/最短一致についてはこちら

置換前:</[\S|\s]+$
置換後:空欄(何も書かない)

特定の文字以降の文字削除 実行前1 HTMLタグ

これは先ほどと同じです。後ろの部分はすべて”</”から始まっている特徴があるので、これらをすべて消します。

すると、以下のようになります。

特定の文字以降の文字削除 実行後1 HTMLタグ

次に、以下のように置換します。
置換前:^[\S|\s]+>
置換後:空欄(何も書かない)

特定の文字以降の文字削除 実行前2 HTMLタグ

新しく説明することはありません。”>“は複数ありますが、一番後ろのものを参照します。

特定の文字以降の文字削除 実行後2 HTMLタグ

簡単にいうと、

  • 正規表現の前に特定の文字を書く:文の最初の当該文字から参照
  • 正規表現の後に特定の文字を書く:文の最後の当該文字まで参照

です。

日付の形式を変更する(例:「2018年1月1日」を「2018/1/1」に)

いよいよお待ちかね(?)日付の型を一括置換する方法です。

ちなみに、これだけであれば、「年」と「月」をそれぞれ/に置換し、「日」を削除すれば済みます。しかし、文のほかの箇所に「年」「月」「日」が含まれていたら?必ずしも置換が簡単な形式ではなく、複雑なものを要求されることも多いでしょう。

※わたしが経験したものは、2018/01/01→2018-01-01の置換です。/という文字はいろんな箇所で使われているため、一工夫が必要でした。

以下のように行えばばっちりです!どんな日付であっても、数字が変わらないまま型だけを置換してくれます。

置換前:(\d+)年(\d+)月(\d+)日
置換後:\1/\2/\3

日付置換 変更前

それぞれの意味を説明します。

まず、\dは、0~9までの数字1文字を指します。後ろに+がついているので、数字1文字の1回以上の繰り返し、ということですね。

次に、\1、\2、\3についてです。これらは、正規表現の文字のパターンを記憶し、同じ文字を代入できる、というものです。これを「後方参照」と言ったりもします。

置換前の()で囲ったものを記憶し、置換後の\1、\2にそれぞれそのまま代入していきます。

最初の(\d+)で年を記憶し、\1に代入、2つ目の(\d+)で月を記憶し、\2に代入、といった具合です。

日付置換 変更後

今回は以上です。正規表現は使いこなすと便利なので、ぜひとも学んでいろいろ試してみてください!今回は、覚えておくと特に便利なものを掲載しました。

正規表現の使い方まとめ
サクラエディタを使いこなそう

サクラエディタと相性抜群のExcelの使い方はこちら。Excelの関数/使い方まとめ

サクラエディタはGrep機能も便利なので使ってみてください。