サクラエディタとは
サクラエディタとは、Windows向けの定番テキストエディタです。動作が軽い上に多機能なため、初心者から上級者まで幅広く使用されています。リリースから長年にわたり愛用者も多く、現場で活用しているプログラマやシステムエンジニアなども多いです。
【参考】:サクラエディタ
正規表現とは
正規表現とは、共通の文字列を持つ複数の文字列を1つの表現で表す方法のことです。文字列の中に固定の文字列と変動する文字列がある場合に、変動する文字列の内容に条件を付け、それに当てはまるものを拾い上げます。
正規表現を使うと1つの検索条件で条件に当てはまる文字列を広く検索することができ、作業の効率アップを図ることができます。
サクラエディタでも便利な正規表現を使用することができます。この記事では、サクラエディタの正規表現を使った便利な検索や置換の一部をご紹介していきます。
正規表現の活用方法
例えばある文章の中に、「20xx年xx月xx日」という形式の日付が複数含まれていて、それをすべて検索したいとします。
「2020年01月09日、2003年11月28日、2014年08月14日」などがあった時、サクラエディタの正規表現を使うと「20..年[0-9]+月[0-9]+日」でこれらすべての文字列をまとめて表すことができます。
このように一定の形式が決まっている文字列を探す時に、1つの表現ですべてを検索することができるのが「正規表現」です。
サクラエディタで正規表現を使うには
サクラエディタで正規表現を使う場合には、検索および置換ウィンドウにある「正規表現」にチェックが必要です。忘れないようにチェックを入れましょう。
正規表現が必要ない場合には、チェックを入れていると検索や置換が意図した通りにできない場合があるため、チェックを外すようにしてください。
サクラエディタは複数行に渡る検索はできない
サクラエディタの検索機能では、複数行にわたる正規表現は使えないため気をつけましょう。
例えば、下図で「山梨県」で始まり「静岡県」で終わる文章を検索するために正規表現を使って「山梨県.*静岡県」で検索する際は、同じ行に含まれていれば検索できます。
しかし、複数行にわたる場合は検索できません。
サクラエディタのよく使う正規表現
ここでは、サクラエディタでよく使用する正規表現を紹介します。
正規表現の基本要素
「¥」 退避修飾(エスケープ)
「¥」は一般的に言われる「エスケープ文字」です。この文字の次の文字は正規表現記号であっても普通の文字として扱います。
例えば正規表現を使った検索の中で「.」(ドット)は「任意の1文字」を意味するため、「.」の文字自体を文章の中から検索することができません。そこで「¥.」と検索することで「.」を検索することが可能です。
また、後述しますが「¥」の次に特定のアルファベットを組み合わせると特殊な文字を表現することができます。
| 選択子
「|」を使うと論理和「or」を指定することができ、「または」の検索ができます。
例えば、正規表現で「20(20|19)年」は「2020年」または「2019年」にマッチします。
(...) 式集合(グループ)
(...)では、()カッコの中の文字列がグループとして扱われます。
例えば、大文字小文字を区別せず「(apple)」と検索した場合、「Apple」と「Pineapple」が検索できます。
[...] 文字集合(文字クラス)
[...]では、[]カッコに当たる1文字が属する文字の集合を表します。
例えば、「[XYZ]」は、XかYかZのどれか1文字にマッチします。
「^」を頭に付けると否定を表します。
「[^XYZ]」は、XとYとZ以外の任意の1文字にマッチします。
文字の範囲を表すこともできます。
「[A-Z]」とするとAからZの任意の1文字、「[0-9]」とすると0から9の任意の1文字とマッチします。
文字種のよく使う正規表現
. 任意の1文字
「.」(ドット)は任意の1文字を表します。
一般的に「あらゆる文字」を意味する「ワイルドカード」の目的で使われることが多く、後述する繰り返しを意味する「*」(アスタリスク)とよく組み合わせて使用されます。
例えば、正規表現の「a.c」は「abc」「a8c」「a@c」など、「a」+「任意の1文字」+「c」のパターンを持つ文字列にマッチします。
これに当てはまらない「ac」や「a35c」などにはマッチしません。
¥d 10進数の数字1文字
「¥d」は10進数の数字1文字を表します。
例えば、「第¥d回」は「第1回」「第5回」のように「第」+「10進数の数字1文字」+「回」のパターンを持つ文字列にマッチします。
これに当てはまらない「第一回」や「第27回」などにはマッチしません。
繰り返しの正規表現
直前の文字を繰り返す表現で、「量指定子(数量子)」と呼ばれます。
「*」は直前のパターンの0回以上の繰り返しを表します。
任意1文字を意味する「.」と組み合わせた「.*」は「文字すべて」を意味し、文字数を制限しないあらゆる文字を表すワイルドカードとしての役割を果たします。
例えば、「aaa.*」は「aaa」を含む以降の文字すべてにマッチします。
「.aaa.」は、「aaa」の前後を含む行内のすべての文字にマッチします。
「+」は直前のパターンの1回以上の繰り返しを表します。
例えば、「number[0-9]+」とすると、「number」と「0から9」(何文字でも)の組み合わせを表現しており、「number0」「number18」「number2022」などにマッチします。
「+」が「*」と異なるのは、直前のパターンを少なくとも1回は含むことが条件ということです。
「numberZero」や「number 18」などは、「number」の直後 ( =「+」の直前)に1回も「0から9」がないためマッチしません。
タブ・改行の正規表現
¥t 水平タブコード(HT,TAB)
「tab」キーを押した時に入力される「タブ」を意味します。
¥r¥n キャリッジリターン+ラインフィード(CR+LF)
Windowsで一般的に使われる改行コードを意味します。
¥n ラインフィード(LF)
MacOSX以降やUNIX・Linuxで一般的に使用される改行コードを意味します。
¥r キャリッジリターン(CR)
MacOS9以前のMacで主に使用されていた改行コードを意味します。
位置を表す正規表現
^ 行頭
「^」は行頭を表します。
例えば、「^Tokyo」の場合、行のもっとも先頭にある「Tokyo」にマッチします。
「 Tokyo」「-Tokyo」など、行の頭ではない「Tokyo」にはマッチしません。
$ 行末
「$」は行末を表します。
例えば、「Hokkaido$」の場合、行のもっとも行末にある「Hokkaido」にマッチします。
「Hokkaido_」「Hokkaido03」など、行末でない「Hokkaido」にはマッチしません。
サクラエディタで使える他の正規表現
ここまで、サクラエディタで使える基本的な正規表現を紹介しました。ある程度の検索や置換であればこれで十分活用できますが、使用できる正規表現は他にもたくさんあります。
より高度な正規表現を使えば、さらなる効率化を図ることができるでしょう。
【参考】:利用可能な正規表現
サクラエディタの正規表現を使った置換の例
ここでは、実際にサクラエディタの正規表現を使用した便利な置換の例をご紹介します。
不要な改行を削除する
文書作成やコーディングをしていると、行の追加編集がある時のために余裕を持たせる目的で、改行のみの行を設けることがあると思います。この改行のみの行が不要になった際に、一括で削除できると便利です。
これについては、正規表現を使って行うことが可能です。考え方としては、行頭の直後に改行があれば行内に他の文字列がないと判断できることから、「行頭にある改行を削除する」という方法で実現します。
サクラエディタの置換画面を開いて「置換前」に「^¥r¥n」と入力し、「正規表現」のチェックを入れます。
「^」は行頭、「¥r¥n」は改行を意味するため、つまり改行以外の文字列が存在しない行にある改行を検索することができます。
そして、「置換後」には何も入力せずにそのまま「すべて置換」をクリックします。
すると改行のみの行が削除されます。
文章の末尾にすべて句点「。」を付ける
書く内容を試行錯誤しながらビジネス文書などを作成する際にありがちなのが、文章の末尾に句点「。」が付いている行と付いていない行が混在することです。
文書を完成させる時には「。」の有り無しどちらかに統一したいという場合、無しに統一するのであれば「。」を「空白」に置換すれば簡単に実現できます。
ですが、有りに統一する場合は同じように単純な置換ができません。そんな時には正規表現を使って行末に「。」がない行を検索し、「。」を追加して置換するという方法で行うことができます。
サクラエディタの置換画面を開いて「置換前」に「([^。])(¥r¥n)」と入力し、「正規表現」のチェックを入れます。
「[^。]」は否定の「^」によって、「。」以外の任意の1文字を意味します。
その直後に改行「¥r¥n」がある箇所を検索しています。
「[^。]」と「¥r¥n」をそれぞれ()で囲んでいるのは、「()」で囲んだ条件式をその後の処理で変数的な表記として使える「番号指定参照」を利用するためです。「置換後」の欄には「()」で囲まれた箇所を「$n」と記載します。「n」は「置換前」の頭から1から順番に連番とします。
「置換前」を入力して検索して黄色いハイライトで置換箇所を確認したら、「置換後」に「$1。$2」と入力します。
こうすることで、「([^。])」が「$1」、その後ろに「。」が入り、さらに後ろに(¥r¥n)が$2として置換されます。
「すべて置換」を押すと「。」がなかった行末に「。」が付いています。
サクラエディタの正規表現を使って文書の検索や処理を効率アップ
ここまで、サクラエディタで使える正規表現や実際の使用例を紹介してきました。ボリュームのあるコーディングや文書作成では、一定のパターンを持った文字列に対して一括で何らかの処理を行いたい場面が多々あります。
複雑な条件が必要になると適切にマッチする正規表現を見つけるのは難しいものですが、良い正規表現が見つかれば効率と作業の正確性が大きくアップします。
手動で時間をかけて作業を行う前に正規表現で便利に検索や置換を行うことができないか検討し、使えるようであればぜひ簡単な正規表現からでも活用してみてください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから