한국어 | English | 日本語
Webアプリケーションエンジニア (経験8.8年)
技術・開発
engineering
ウェブフロントエンドと バックエンド開発を扱います

一枚でわかる正規表現

宇宙語のように難解に見える正規表現(Regex)も、一度習得すれば一生役立つ開発者の必須スキルです。ログ分析からデータ検証まで、実務で遭遇する複雑なテキストパターンマッチングをたった一行の式で解決する効率的な文法体系を探ります。
開発者が習得すべき主要スキルの一つである正規表現のユースケースと基本原理を学習します。特定の単語を直接指定する基本文法から、文字タイプ(\d, \D)、位置指定、繰り返し回数の制御、そしてグループ化(キャプチャ)のような拡張文法まで、複雑なパターンを記号化して検索する方法を体系的にまとめます。

個人的に好きだったGoogle Tech LeadのYouTuberが、開発者なら当然知っておくべきいくつかのスキルをアップロードしたことがあります。

この中で今日のテーマは、一番最初に挙げられた正規表現です。途中の5番目は少し場違いな気がしますが、開発者は実際にはコーディングよりもコミュニケーションを多く取る仕事だと思うので、あまり良い戦略ではないでしょうね。正規表現は、学部の頃も「後で勉強しよう」とメモはたくさんしましたが、結局きちんと覚えずに、毎回必要な時に調べて使っていたような気がします。最近整理したところ、文法のように分類して覚えると簡単でした。実際、RegexはTech Leadが言う通り、開発において非常に広く使われています。テキスト検索、正確にはパターンマッチングに使われるのですが、検索には以下のような数多くのユースケースがあります。

Regexは、初めて見た時や勉強する前までは、暗号か宇宙語のように見えます。これは、私たちが普段接する言語では、セマンティクスが単語またはその組み合わせで表現されますが、正規表現ではセマンティクスがそれぞれ一つの文字にマッピングされているため、暗号体系と同じように感じられるからです。これも構文(シンタックス)として分類すると以下のようになり、正規表現を習得する上で大いに役立ちます。

One Page Explain for Regular Expression

基本的に、特定の単語を検索するために正規表現を使用しますが、単に探したい1. 特定の単語を直接指定する方法だけでなく、2. 文字や数字の組み合わせとして単語を指定することもできます。正規表現はこれに対し、二つの方法を提供します。

基本文法

簡単に、検索したい特定の単語を直接指定すればよいです。 もし複数の単語を一度に検索したい場合は、()の中に|を使って複数の単語を入れればよいです。

文字セット

特定の文字を指定したい時は、単語と同じように使用できますが、[]を使って複数の文字を見つけたり、[]の内部で拡張表現を使ってAからZまで(A-Z)のルールを追加したり、特定の文字を除外したりすることもできます。

文字タイプ

数字の文字を検索したい場合、上で学んだように[0-9]も良いですが、『数字』の文字タイプを指定して検索することもできます。文字のタイプを指定するためのものがバックスラッシュ(\)で、例えば**『数字』の文字タイプは\dと表現でき、『数字ではない』文字タイプは\Dのように大文字で表記**できます。

拡張文法

位置指定 (アンカー)

特定の単語や文字を見つける場合でも、文章の先頭または末尾に存在するものを探したいときに使用します。

繰り返し回数 (量指定子)

特定の単語や文字が何回繰り返されたものを検索したいかを指定できます。

(abc){1} = abc (1回のみ出現)
(abc){1,3} = abc, abcabc, abcabcabc (1回から3回出現)
(abc)? = (空文字), abc (0回または1回出現)
(abc)+ = abc, abcabc … (1回以上出現)

キャプチャ = グループ化

前述の通り、パターンで検索する単語を集合としてまとめたり、検索した結果を利用したいときに結果値を保存する役割を果たします。


正規表現は一度学べば、どんな開発言語でも汎用的に使用可能で、開発で活用できるケースが非常に多いため有用です。このように整理したことで、これからは毎回調べることなくうまく使えるようになると思います。


一枚でわかる正規表現
Author
Aaron
Posted on
Licensed Under
CC BY-NC-SA 4.0
CC BY-NC-SA 4.0
同じカテゴリーの関連記事
最新記事
LLMフィルターが奪う会話の筋肉とコミュニケーション様式
会話における無礼さを濾過し、洗練された回答を生成するLLMツールが日常化した現代において、私たちは本当に思慮深い会話をしているのだろうか?リアルタイムのコミュニケーションにおける数多くの失敗を通じて磨かれるべき会話能力が、外部ツールに依存することで退化している現象と、それがもたらす社会的な不安や世代間の行動様式の変化について考察する。
シニア採用における年俸交渉の最適なタイミングと戦略
年俸交渉は単なる数字の交換ではなく、心理的な駆け引きとタイミングが重要です。本稿では、企業側にとって、候補者が計算的な態度を取りがちな最終合格後よりも、採用プロセスの初期段階から段階的に交渉を進めることが、なぜより効率的であり、率直な情報の共有に繋がるのかを考察します。
法治主義の限界と人間の多様性
全ての人間の行為を単一の法体系で規制できるという信念は、傲慢であるかもしれない。この記事は、中世の階層的な統制から脱却し、現代の無限の自由を手に入れた人類が直面する法治主義の逆説と、多様性という名のもとに深化する社会的強制力と他者への悪魔化現象を鋭く分析する。
토스트 예시 메세지