サクラエディタの正規表現とは
仕事で扱う集計データから特定の文字列を含む不要なデータを削除したり、特定の文字を省いた行を削除したりするなど、これらをExcelやマクロを活用して対応するのは骨が折れる作業です。
そこで活用したいのが、サクラエディタの正規表現です。サクラエディタはWindows上で動作する日本語テキストエディタであり、メモ帳代わりに使用したり、ITエンジニアがプログラミングで活用したりしています。
正規表現とは文字列の集合を1つの文字列で表現する方法の1つであり、複数の文字列をコンパクトにまとめられます。
この記事では、サクラエディタでよく使う正規表現や置換の例、Grep、ワイルドカードなどについて解説します。
ぜひ『マイナビIT エージェント』をご活用ください!
そもそもサクラエディタとは
サクラエディタはWindows向けの定番テキストエディタであり、動作が軽い上に多機能なため、初心者から上級者まで幅広く使用されています。
Windowsには元々デフォルトでメモ帳であるテキストドキュメントが搭載されており、単なるメモ帳として活用するのであればこれで事足ります。しかし、テキストドキュメントでもある程度はプログラミングが可能ですが、ミスに気付きにくいデメリットがあります。
サクラエディタは変更したい拡張子に合わせて基本構文に色付けし、ミスが視覚化できるなどソースコードが見やすくなるためおすすめです。
【参考】:サクラエディタ
どんな職種で活用する?
サクラエディタはリリースから長年にわたり愛用者も多く、現場で活用しているITエンジニアも多いです。日本製のエディタであるため扱いやすく、多くのプログラマーやシステムエンジニアに好まれています。
プログラミングでは開発するシステムによってエディタを使い分ける場合もありますが、サクラエディタはさまざまな言語に対応しているのでメインとして利用するケースも多いです。
正規表現を使いこなすメリット
サクラエディタに限らず、プログラミングではテキストエディタの正規表現を使いこなすことで効率的なコーディングが可能です。プログラミングのスキル向上をサポートする手法の1つであり、特にプログラマーにおいては多くの経験値を得ることが実績に直結します。
プログラマーは実績を積むことが年収アップにつながりやすいため、高収入を目指すことも可能です。ここでは参考例として、プログラマーの平均年収をいくつかのデータを元に紹介します。
「マイナビエージェント 職種図鑑」でのプログラマーの平均年収は344万円(※2024年9月執筆時点)、経済産業省2017年発表の「IT関連産業の給与等に関する実態調査結果」から近い職種のエンジニア/プログラマを参考にすると、平均年収592万円でした。
国税庁2020年発表の「民間給与実態統計調査」における民間企業の平均年収は433万円なので、プログラマーの年収は大きく幅があり、年齢やスキルによって大きく変化すると考えられます。
【参考】:マイナビエージェント 職種図鑑 ※【平均年収 調査対象者】2020年1月~2020年12月末までの間にマイナビエージェントサービスにご登録頂いた方 【参考】:IT関連産業における給与水準の実態① ~ 職種別(P7) 【参考】:民間給与実態統計調査-国税庁
正規表現とは
正規表現とは、共通の文字列を持つ複数の文字列を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として置換されます。
「すべて置換」を押すと「。」がなかった行末に「。」が付いています。
エンジニア転職のご相談はぜひ
『マイナビIT エージェント』へ!
サクラエディタの正規表現を使って文書の検索や処理を効率アップ
ここまで、サクラエディタで使える正規表現や実際の使用例を紹介してきました。ボリュームのあるコーディングや文書作成では、一定のパターンを持った文字列に対して一括で何らかの処理を行いたい場面が多々あります。
複雑な条件が必要になると適切にマッチする正規表現を見つけるのは難しいですが、良い正規表現が見つかれば効率と作業の正確性が大きくアップします。手動で時間をかけて作業を行う前に、正規表現で便利に検索や置換を行うことができないか検討しましょう。
また、プログラミングの効率化はコーディングスキルを向上させるため、プログラマーとしてキャリアを積むには欠かせない工程です。実績を積んだらキャリアアップ転職のために動きましょう。
そこでぜひご活用いただきたいのがマイナビIT エージェントです。
マイナビIT エージェントは、IT・Webエンジニア向けの無料の転職⽀援サービスです。
IT・Webエンジニアの転職事情に詳しいキャリアアドバイザーが、あなたのご経験やスキルをお伺いし、転職活動のプランをご提案致します。
アドバイザーは企業側の人事担当者と直接連携を取れますので、求人票に載っていない企業情報も確認することができます。残業時間や給与面など、働き方などをしっかり確認の上で応募企業を選んでいくのが良いでしょう。
・資格やプログラミングの勉強をしているけれど、企業が求めるレベルに達しているのかわからない ・スキルアップをして市場価値を上げていける企業の選び方を知りたい ・数多くあるITエンジニアの職種の中で、自分に向いている仕事は何か知りたい
こうした悩みを抱えていらっしゃる方は、まずは無料登録でキャリアカウンセリングをおすすめ致します。
マイナビエージェントに無料登録して
転職サポートを受ける
その他のサクラエディタ関連記事
その他、サクラエディタに関連する内容は、下記の記事でもご紹介しています。ぜひ参考にご覧ください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから