ゆるトーク:正規表現というもの
放課後の教室。3人の高校生が机を囲んで雑談している。テーマは「正規表現」。 ふーこ.icon(進行)
ねえねえ二人とも!今日のテーマは〜……正規表現!
プログラムとかでよく見るやつ。なんか「呪文」みたいな文字列のやつw ^[a-z]+$ とかさ。初見だとガチで暗号じゃん? あや.icon
まあ……そのような記号の並び、たしかに不思議な詩のようですわね。
文字たちが秩序をもって並び、意味を見つけていく……
まるで、文章の中から特定の言葉を探す司書のようでございます。
りか.icon
概念としては近い。
正規表現(Regular Expression)は、文字列のパターンを定義する形式言語。
テキスト検索・入力チェック・置換などに使う。
参考:
ふーこ.icon
おー、りかの説明、いつも通りクールで助かる〜。
つまりさ、「こういう形の文字を見つけてね!」っていうルールを書くやつだよね?
たとえば
cat
って書いたら「cat」探すだけだけど、
c.t
って書くと cとtの間に何か1文字あるやつ全部OK!
cat
cut
cot
みたいな。便利〜!
りか.icon
正確。
. は「任意の1文字」を意味するメタ文字。
正規表現では、こういう特殊文字(メタキャラクタ)が多い。
例
. 任意の1文字
* 0回以上繰り返し
+ 1回以上
[]文字集合
あや.icon
まあ……。
文字たちに役割があるのですね。
まるで舞台の役者のように、それぞれが決められた振る舞いをする……(微笑)
ふーこ.icon
あや、それ表現エモいw
あとさ!個人的に一番「うおっ」ってなるのがこれ。
[0-9]+
数字いっぱい探すやつ!
りか.icon
そう。
分解すると
[0-9] → 0〜9のどれか
+ → 1回以上
つまり 連続した数字。
例えば
今日は気温23度
から23を抽出できる。
あや.icon
あら、それは便利ですわね。
文章の中から数字だけを取り出す……
まるで物語の中から宝石を拾い上げるような作業ですわ。
ふーこ.icon
あやの例え、毎回ファンタジーなんよw
でも正規表現ってさ……
だんだんヤバい呪文になるのが難点だよね。
例えばメールチェックとか。
りか.icon
その通り。
メールの正規表現は有名な例。
かなり複雑になる。
例(簡略):
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$
これは
メールアドレス形式かどうかを判定する。
ふーこ.icon
うわ出たw
ラスボス呪文!
初めて見たとき
「人間が書いたのこれ?」って思ったw
あや.icon
確かに……少々、暗号めいておりますわね。
けれど、規則がわかれば読み解ける……
それは古い文献を解読するのにも似ております。
りか.icon
実際、正規表現は理論計算機科学にも関係する。
形式言語理論では
正規言語 ←→ 正規表現 ←→ 有限オートマトン
という対応がある。
参考:
ふーこ.icon
出たよ理系魔法w
つまり
機械が文字をチェックするルールの数学版って感じ?
りか.icon
概ね正しい。
テキスト処理を高速に行うための理論基盤。
あや.icon
文字を探す技術の背後に、そんな深い理論があるのですね……。
本棚の静かな一冊にも、長い歴史が宿っているように。
知れば知るほど、言葉というものは奥深いものですわね。(微笑)
ふーこ.icon
今日のまとめいくよー!
正規表現とは!
文字のパターンを決めるルール
検索とか入力チェックで使う
. や * とか特殊文字がある
でもたまに呪文になるw
こんな感じ!
りか.icon
補足。
正規表現は覚えるより、使いながら調べる方が実用的。
実務でもそのスタイルが多い。
あや.icon
学びとは、少しずつ慣れていくものですものね。
焦らず、一文字ずつ……(微笑)
ふーこ.icon
よーし!
じゃあ次回のテーマどうする?
SQL?AI?それともGit?
技術トーク回、地味に楽しいんだがw