めも

2年生

正規表現

アウトプットのためブログを始めました。

日々の業務で学んだことや困ったことを書いていこうと思います。

何かのエラーでググったら出てくるブログとかイイですね…!

 

一発目は正規表現について書いてみます。今の案件で正規表現を初めて使ったのですが使えるようになると便利な気がします!

正規表現は文字列の並びのパターンを表現するものです。大量のテキストから特定のパターンの文字列を検索したいとき等に使えますね。

 

例としておそ松さんの六つ子の名前を正規表現で表してみようと思います。

まず、彼らの名前は上から松野おそ松、松野カラ松、松野チョロ松、松野一松、松野十四松、松野トド松です。

お分かりの通り彼らの名前は松野X松(X=一文字以上のなんでもよい文字)でパターン化されてます。これを正規表現で表すと次のようになります。

松野.+松

これで検索すると各松の名前がヒットします。それではこの”.+”がどういう意味なのか解説していきまっするまっする。

 

"."

任意の一文字を表します。改行コード以外なら英数字でも漢字でもスペースでもなんでもOK!このような文字をメタキャラクターと呼びます。

 

"+" 

直前の文字を一回以上繰り返します。例えばab+ならabb、abbbbb等がヒットします。

これとほぼ同じものに"*"があります。これは直前の文字を0回以上繰り返すものです。つまりab*ならabもヒットしてくれるわけです。

 

というわけで、".+"この組み合わせは『任意の一文字を一回以上繰り返す』という意味になります。松野.+松は、松野と松の間に何かしらの文字が含まれている文字列を表してるわけですね!

 これで一度に全ての松を表現できるようになりました。今度はもう少し対象を絞ってみます。

 

カタカナの文字を含む文字列を指定する

先ほどは文字の種類を指定しませんでした。今度はカタカナが含まれている松のみ対象にしたいと思います。

松野[ァ-ヴ]+松

先ほどの"."が"[ァ-ヴ]"に変わりました。ァ~ヴの文字を範囲指定しています。要するにすべてのカタカナですね!ちなみに[ア-カ]ならア~カの文字を指定したことになります。

カタカナだけでなく、英数字やひらがなの場合も[a-z][ぁ-ん]という感じで同様にできます。

 

複数の文字列のうち、どれかを含む文字列を指定する。

 今度は特定の松を2人指定してみます。六つ子の中でも個性的なカラ松と十四松にしてみましょう~

この二人、名前のパターンに2人だけの共通点がありません。。そんなときはこうしてやります。

松野(カラ|十四)松

 "|"は論理和(または)を表しています。カラ、または十四が含まれている文字列、というわけです。もちろん2つ以上の文字列を指定することができます。

松野(カラ|十四|おそ)松、とこのように後ろに続けて書いてあげましょう!

 

他にももっと様々なメタキャラクターがありますが、一旦これで締めます。

ちなみにGoogle Chromeだとページ内検索で正規表現を使うことはできません。。(他のブラウザは確認してないです。)

が!Super Highlight Searchという拡張機能を入れると正規表現を用いた検索を行えるようになるようです。使いどころは…う~ん…

 

次は実際に業務の中で正規表現をどう使っているか書いてみようと思います。