正規表現はコスパの良い技術
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スプレッドシートで使えるので、なんらかの文字列のパターンを判断したい場合は役に立ちます。
=REGEXMATCH(A5,$B$2)
REGEXMATCH関数
A5:評価するテキスト
$B$2:正規表現
それでは正規表現についての話でした。
わからない部分などあれば、コメントいただければ解説しまっす。
この記事が気に入ったらサポートをしてみませんか?