本日は、愛用者も多い(?)サクラエディタの使い方をご紹介したいと思います。
みなさんは、文章を書くときどのテキストエディタを使っていますか?

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]+$
置換後:空欄(何も書かない)

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

 

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

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

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

簡単にいうと、
正規表現の前に特定の文字を書く:文の最初の当該文字から参照
正規表現の後に特定の文字を書く:文の最後の当該文字まで参照
です。

 

 

日付の形式を変える(例:「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に代入、といった具合です。

 

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

 

正規表現の基本については以下をご覧ください。

 

 

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



スポンサーリンク


Facebook いいね!/Twitterフォローお願いします