正規表現の紹介と歴史

正規表現の紹介と歴史のカバー画像

こんにちは、世界!「正規表現」シリーズへようこそ。ここでは、開発者の間で多くのミームを生んだ圧倒的な構文に挑みます。でも心配しないで!この旅を終える頃までに、自分だけのエレガントな正規表現を組み立てられる自信を持てるようになると保証します。

このカバー画像はMidjourney.aiのDiscordサーバーから取られました。

このシリーズでは、特定のプログラミング言語の制約にとらわれることなく、https://regex101.comを使ってパターンを共有します。これは、一部の学習者に障壁を作る可能性があるからです。

→ もしコードが必要になった場合、私はC++を使用します。

正規表現とは何か?


正規表現は、論理をプログラミングする際に使用される特定のテキストパターンです。

正直言って、直接的または間接的に正規表現を使用していない現代のアプリケーションは一つも思いつかないですよ。もしウェブサイトに行って、メールフィールドに意味不明なテキストを入力したら、無効なメールフォーマットであるというメッセージが表示されただろうと思います。

無効なメール

この画像はこちらから取られました

内部では、あなたの入力テキストは以下の正規表現パターンによって検証されています。

[a-z0-9.-]@[a-z0-9]{2,}\.[a-z]{2,}

フルスクリーンモードから出る

この正規表現がどのように動作するかはこちらで見ることができます。これはシンプルなメールアドレスにマッチするための最小限のバージョンです。最初は圧倒されるかもしれませんが、忍耐強く付いてきてください。このような表現はたった10秒未満で作成できます。

一体全体、この名前はどこからきたの?

正規表現の名前は、数学概念である正規言語に由来しており、それは元々は形式言語理論の分野の数学者によって最初に研究されたものです。正規表現は、文字列内のパターンを記述し、一致させる手段として、そのため「正規」表現と名付けられています。

正規表現の開発につながった問題

正規表現は1950年代に(私たちの多くが生まれるずっと前に)、テキスト処理 タスク、例えば 検索編集 に役立てるために作られました。それ以来、正規表現は多くのプログラミング言語の標準機能となっています。

1960年代初頭、Ken ThompsonはQEDテキストエディターで正規表現を実装しました。これが実際のアプリケーションで使われた初めての例でした。

なぜ正規表現を学ぶべきなのか?

正規表現を学ぶことには、次のような様々な分野で多くの利点があります。

  • データ分析
  • ソフトウェア開発
  • コンテンツ管理
  • 科学研究

その汎用性により、特定の単語やフレーズを見つけるための複雑なパターンを定義したり、構造化されたテキストからデータを抽出したり、高度な検索や置換操作を実行したりすることができます。

加えて、正規表現をマスターすることで、精確でコントロールされたアプローチを提供することにより、高額なミスを防ぐことができます。正規表現の確かな理解があれば、難しいテキスト操作のタスクに自信を持って取り組むことができ、精度、信頼性、生産性の向上を実現できます。

ここまで来たということは、あなたもコードにあの扱いにくい括弧や疑問符の文字列を理解して使う準備ができていると見なしています。

正規表現のフレーバー


どのテキストパターンが正規表現であるか、またはないかを規定した確立された標準はありません。市場には、正規表現がどのようなものであるべきかについて様々なアイデアを持つ作者たちによって作られたたくさんの言語が存在します。その結果、私たちは正規表現のフレーバー(プログラミング言語でのRegExpの実装)の全スペクトルを持つことになりました。

しかし、なぜ車輪を再発明するのでしょうか?その代わりに、すべての現代的な正規表現エンジンはPerlプログラミング言語に遡ることができます。

正規表現のフレーバーは一般にスクリプト言語に組み込まれていますが、他のプログラミング言語は正規表現サポートのために専用のライブラリを頼りにしています。JavaScriptは、/expr/の構文またはRegExpオブジェクトを使って正規表現の組み込みサポートを提供します。他方、Pythonは標準ライブラリreを通じて正規表現を実装しています。

参考文献


連絡先


Email: tbhaxor at proton dot me
LinkedIn: @tbhaxor
Twitter: @tbhaxor

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/tbhaxor/motivation-for-inventing-regular-expression-1kib