このページの内容

Awesome Regex

Regexを扱う資料や関連プロジェクトをまとめたAwesomeリストです。

目次

テスター

正規表現の構築、テスト、および実行に使用。

  • regex101 - 最も無料で最高のウェブベースのテストツール
    • Flavors: Java, JavaScript, .NET, PCRE, RE2, Rust, and emulates Python.
    • Includes regex debugger (PCRE only).
  • RegexBuddy (Windows, $40) - 最も優れたテストツール
    • Flavors: Emulates hundreds of flavors/versions, with deep knowledge of differences.
    • Includes regex debugger.
  • RegExr [GitHub] - 最も優れたオープンソーステストツール
    • Flavors: JavaScript, PCRE.
    • Languages: 🇺🇸, 🇨🇳 (fork).
  • RegexLearn [GitHub] - 最も多言語対応のテストツール (JavaScript)
    • Languages: 🇺🇸, 🇹🇷, 🇷🇺, 🇪🇸, 🇨🇳, 🇩🇪, 🇺🇦, 🇫🇷, 🇵🇱, 🇰🇷, 🇧🇷, 🇨🇿, 🇬🇪.
  • regexplained [GitHub] - プレゼンテーション向けの最も優れたテストツール (JavaScript)
✳️ Notable mentions

コマンドライン

  • pcre2test - 正規表現デバッガーを含む。味: PCRE
  • rxrx - 正規表現デバッガーを含む (video intro)。味: Perl

味(flavor)別

複数の味

  • CyrilEx [GitHub] - Java, JavaScript, MySQL, PHP, Python, Ruby.
  • Patterns (macOS, $3) - Bash, Emacs, grep, Java, Oniguruma, PCRE, POSIX BRE, POSIX ERE, Ruby, sed.
  • RegexPlanet [GitHub] - Go, Java, JavaScript (Bun, Deno, Node.js), .NET, Perl, PHP, PostgreSQL, Python, Ruby, Rust, Swift, Tcl, XRegExp.

構文不要の正規表現ビルダー

正規表現を書く必要なく、正規表現の構文やコードを書かずに構築できる。

  • ChatGPT その他LLM - 例: Xをマッチさせる正規表現を作成し、段階的に説明してください”
  • RegexMagic (Windows, $40) - サンプルとルールを使用して正規表現を生成
    • Flavors: Emulates hundreds of flavors/versions.
✳️ Notable mentions
  • Regex Generator [GitHub] - サンプルテキストから簡単な正規表現を生成
  • Regex.ai - テキスト内のサンプルをマークし、AIを使用して潜在的な正規表現を生成

可視化ツール

あなたの正規表現がどのように構成されているか、あるいはどのように動作するかを可視化できる。

  • Regex Vis [GitHub] - ライナー図を生成、視覚エディタ付き。味: JavaScript
    • Languages: 🇺🇸, 🇨🇳.
  • Regulex [GitHub] - ライナー図を生成。味: JavaScript
  • Nodexr [GitHub] - グラフィカルエディタで視覚的な階層構造を提供。味:.NET.
✳️ Notable mentions
  • Regex Nodes [GitHub] - グラフィカルエディタで視覚的な階層構造を提供。味:JavaScript.
  • Debuggex - 鉄道図を生成。味:JavaScript、PCRE、Python.
  • Regexper [GitLab] - 鉄道図を生成。味:JavaScript.

grep系ツール

ファイルを検索・置換できる。

コマンドライン

  • ripgrep - より良いかつ速いgrep。ディレクトリを再帰的に検索しつつ、gitignoreルールを尊重し、隠しファイルやバイナリファイルをスキップする。
    • Flavors: Rust (default), PCRE.
  • nomino - ファイル名のリネームには正規表現を使用。
    • Flavor: Rust.

関連項目: Feature comparison of grep-like tools.

GUI

  • Aba Search and Replace (Windows, $30) - 入力中にマッチを表示。
  • PowerGREP (Windows, $159) - GUIまたはコマンドラインからアーカイブ、バイナリファイル、PDF、ドキュメント/シート、メールなどに検索可能。
    • Flavors: Emulates hundreds of flavors/versions.
  • PowerRename (Windows) - ファイル名のリネームには正規表現を使用。

チュートリアル

正規表現の使い方を学ぼう.

従来型

✳️ Notable mentions

対話型演習付き

  • RegexLearn [GitHub] - 交互式チュートリアルと練習問題。
    • Languages: 🇺🇸, 🇹🇷, 🇷🇺, 🇪🇸, 🇨🇳, 🇩🇪, 🇺🇦, 🇫🇷, 🇵🇱, 🇰🇷, 🇧🇷, 🇨🇿, 🇬🇪.
  • RegexOne - 交互式チュートリアルと練習問題。

動画

正規表現エンジン

主要な正規表現の実装例:プログラミング言語に組み込まれたものや、独立したライブラリとして提供されているもの.

ドキュメント

公式の正規表現リファレンスとガイド.

正規表現フレーバー

ℹ️ Raku(かつてはPerl 6)が正規表現を再構築する。詳細は: Grammars (tutorial), Regexes (best practices)。

独自フレーバーを持たない実装

ソースコード

主要な正規表現実装の背後にあるコードを読むか、貢献するか。

  • Boost.Regex - C++ リグレクスライブラリ.
  • Hyperscan - インテルの高性能ライブラリ、 DPI に使用.
  • ICU - Unicode org のパッケージで、完全な Unicode サポートを提供.
  • Java: java.util.regex - JDK の標準リグレクス.
  • JavaScript:
  • .NET: System.Text.RegularExpressions - すべての .NET 言語(C#、VB など)で共有されている.
  • Onigmo - Oniguruma から分岐した。Ruby 2.0+ で使用.
  • Oniguruma - Ruby 1.9、TextMate の文法などに使用される C リグレクスライブラリ.
  • PCRE2 - PHP、Rなどに使われる人気のC言語の正規表現ライブラリ
  • Perl - perlregutsを参照してください。
  • Python: re および regex - 標準および拡張された正規表現ライブラリ
  • RE2 - Goなどに使われる人気のC++正規表現ライブラリ。バックトラッキングエンジンではない。
  • Rust: regex - バックトラッキングエンジンではない。

フレーバー間の違い

正規表現の種類ごとの構文と動作の違い。

性能

パターンとエンジンのパフォーマンス、ベンチマーク、および ReDoS 防止。

効率的な正規表現の作成

ℹ️ バックトラッキングエンジンを使用する場合、正規表現の構成方法が一致するマッチや失敗の報告速度に影響を与えることがあります。

✳️ Notable mentions

正規表現エンジンの最適化

ベンチマーク

ReDoS検査ツール

  • regex.rip - ReDoS脆弱性を検証する正規表現をテストする
  • recheck [home] - JavaScriptおよびScalaでReDoS脆弱性を検出するライブラリ。ESLintプラグインとして使用可能
  • vuln-regex-detector - ReDoS脆弱性を検出するPerlライブラリ

⚠️ これらのツールにはサポートされる文法に制限があります。

パターン集

特定のタスクに用意された事前作成された正規表現。

  • Book: Regular Expressions Cookbook, 2nd Edition (2012) - 高品質な解説を含む詳細な説明
    • Flavors: Java, JavaScript, .NET, PCRE, Perl, Python, Ruby, XRegExp.
  • Regex DB - 解説には、一致するテキストと一致しないテキストの基本的な記述および例が含まれる
⚠️ Word of warning

Many regexes found online are low quality. It’s risky to use regexes you don’t fully understand in code, since they might have false positives/negatives, be vulnerable to performance problems with certain target strings, or assume a different regex flavor.

JavaScript正規表現ライブラリ

高度な正規表現の使用や処理に向けたオープンソースJavaScriptライブラリ。

代替ビルダーとエンジン

  • Regex+ - 拡張された読みやすさと高性能なJavaScript正規表現をサポートするテンプレートタグ
  • Oniguruma-To-ES - OnigurumaパターンをネイティブJavaScript正規表現に変換
  • Use other engines via WebAssembly: node-re2 (RE2), rregex (Rustのregex), vscode-oniguruma (Oniguruma)

抽象化された正規表現構文

正規表現プロセッサー、ユーティリティなど

JavaScript正規表現の進化

JavaScriptにおける正規表現の改善の歴史 standard。ES2018以降には、機能が開発および議論されたTC39の提案へのリンクが含まれています。

  • ES3 (1999) introduced regular expressions.
  • ES5 (2009) fixed unintuitive behavior by creating a new object every time regex literals are evaluated [explainer], および、文字クラス内でエスケープされない前slashを含む正規表現リテラルを許可した (/[/]/).
  • ES6/ES2015 added: [explainer]
    • Flag y (sticky), which anchors matches to lastIndex.
    • Flag u (unicode) [explainer] [2016 spec fix], これは \u{…} を通じてユニコードコードポイントエスケープを追加し、未指定エスケープ、八進数エスケープ、量化された先行確認、および特定の文脈における未エスケープ特殊文字に対して厳密なエラーを発生させ、フラグ i におけるユニコードケースフォールディング、およびコードポイントマッチング(量化子、文字クラス、範囲、および組み込みセットに影響)を提供する。
    • Getter RegExp.prototype.flags, the ability to copy a regex using RegExp (optionally with new flags), and support for subclassing RegExp (along with RegExp.prototype[Symbol.match/replace/search/split] and RegExp[Symbol.species]).
  • ES2018 added flag s (dotAll), lookbehind, named capture, および Unicode properties ( \p{…} および \P{…} により、フラグ u を必要とする; 詳細は list を参照)。
  • ES2020 added string method matchAll (イテレータを返す)、さらに RegExp.prototype[Symbol.matchAll]
  • ES2022 added flag d (hasIndices), これはマッチされたサブ文字列の開始および終了インデックスを提供する。
  • ES2024ではフラグvunicodeSets)[解説]が追加されました。これはフラグuを拡張し、複数文字からなる「文字列のプロパティ」を\p{…}へ追加します。また、文字クラス内の複数文字要素を\p{…}\q{…|…}で表現でき、入れ子の文字クラス、集合演算子[…--…][…&&…]、文字クラス内の新しいエスケープ規則を利用できます。さらに、\p\Pについて、否定文字クラス[^…]内での大文字・小文字を区別しないマッチングが修正されました。
  • ES2025 added modifiers (?ims:…), duplicate named capturing groups に別々の選択肢経路で、および RegExp.escape

Editions from ES2019 onward have added additional Unicode properties that can be used via \p{…} and \P{…}. ES2021 added string method replaceAll, although the only difference from ES3’s replace when given a regex is that it throws if not using flag g.

See also
🔮 Future: Active proposals
  • Extended mode and comments (2021) - フラグ x (extended) において、無関係な空白および行コメント (#…) を含み、インラインコメントを (?#…) で提供。
  • Atomic operators (2021) - 原子グループを (?>…) で提供し、持続量化子(例: *+, ++)を導入。
  • Buffer boundaries (2021) - アンカー \A および \z はフラグ m に影響されない。
  • \R escape (2021) - 文字クラス外では、 \R は任意の行終端をマッチする。
  • Restrict subclassing support in built-ins (2020) - RegExp のサブクラス化が縮小された。
  • Legacy RegExp features (2015) - 過去の機能の標準化。

書籍

選ばれた正規表現の本の一覧.

  • Regular Expressions Cookbook, 2nd Edition (2012) ジャン・ゴイバーツおよびスティーブン・レヴィタンによる - 八つのプログラミング言語に向けた正規表現チュートリアル、実用問題100以上の正規表現レシピ、および各味の違いに深く焦点を当てる。
    • Flavors: Java, JavaScript, .NET, PCRE, Perl, Python, Ruby, XRegExp.
  • Mastering Regular Expressions, 3rd Edition (2006) ジェフリー・フリードルによる - コンピュータ科学の名作で、基礎知識を既に持っている人向け。効率的な正規表現の作成に関する良好なカバーを含む。
    • Flavors: Dedicated chapters on Java, .NET, Perl, and PHP (PCRE), with more limited coverage of Python, Tcl, command line tools, etc.
  • Introducing Regular Expressions (2012) マイケル・フィッツジェラードによる - 正規表現にまだ慣れていないプログラマ向けの導入書で、基本を厳密に扱う。

記事

選ばれた正規表現に関する記事の一覧.

コミュニティ

正規表現を議論し、支援し、助けを求める.

その他

その他、興味深い、楽しい、そして便利なコンテンツです。

このリストについて

Awesome Regex は Steven Levithancontributors によって作成されました。

スポンサーと支援者

過去のスポンサー

もしこのプロジェクトを支援したいなら、改善点を提供したり、他人に共有したり、あるいは sponsoring 進行中の開発に協力していただけると嬉しいです。

© 2024–present. CC BY 4.0。