見出し画像

正規表現はコスパの良い技術

From: Hatch

今日は正規表現(RegularExpression)のはなし

正規表現はプログラミング言語じゃないけど、下手な言語よりもかなり役に立つ
特に自動化などが、普及してくる中で正規表現が使えなければ、すごく効率の悪い処理をしなくてはいけなくなる。

補助的な技術ではあるけど、学習コストが低くて得るものは多い。
なんらかのホワイトカラー業務にあたっている人は、絶対に押さえておいたほうがいい

前置きはこのへんでちょっと解説します

正規表現とは

正規表現(せいきひょうげん、英: regular expression)とは、文字列の集合を一つの文字列で表現する方法の一つである。正則表現(せいそくひょうげん)とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。まれに正規式と呼ばれることもある。

ふむ。ちょっとわかりにくい

簡単にいえば「文章をパターン化したもの」を正規表現という。

どういうこと?

例えば「0123456789」この数字のパターンを伝えたい場合、なんと伝える?

日本語で伝えるなら、「数字10桁」

この場合、正規表現では次のように書く

\d{10}

\dは数字を表していて{10}は桁数
※正規表現は言語やツールによって微妙に異なるから、環境によってドキュメント参照してね。

あるいは、

[0-9]{10}

こちらの場合は、視覚的にわかりやすい。

厳密には微妙に違っていて「0~9の数字が10桁

なので、

[1-9]{10}

このように書けば、ゼロを除外することができる。

具体的にプログラム(C# .NET Core)を書くと

using System;
using System.Text.RegularExpressions;

namespace HatchNote
{
   class Program
   {
       static void Main(string[] args)
       {
           var text_OK = "0123456789";
           var text_NG = "0123xxxx6789";

           // Regexクラスを使って正規表現を定義
           // RegexはRegularExpressionsの略
           var regex = new Regex(@"\d{10}");

           // 正規表現に一致するパターン
           Console.WriteLine(regex.IsMatch(text_OK));

           // 正規表現に一致しないパターン
           Console.WriteLine(regex.IsMatch(text_NG));
       }
   }
}

これを動かすと、下のような結果が得られる

True
False

プログラム書けないんだけどなにか役立つ?

Googleスプレッドシートで使えるので、なんらかの文字列のパターンを判断したい場合は役に立ちます。

画像1

=REGEXMATCH(A5,$B$2)

REGEXMATCH関数
A5:評価するテキスト
$B$2:正規表現

画像2

それでは正規表現についての話でした。
わからない部分などあれば、コメントいただければ解説しまっす。


この記事が気に入ったらサポートをしてみませんか?