Awesome Regex
Regexを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
- Testers
- Syntax-free regex builders
- Visualizers
- Grep-like tools
- Tutorials
- Regex engines
- Performance
- Collections of patterns
- JavaScript regex libraries
- JavaScript regex evolution
- Books
- Articles
- Communities
- Miscellaneous
テスター
正規表現の構築、テスト、および実行に使用。
- 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)別
- fancy-regex (Rust library): fancy-regex playground [GitHub].
- JavaScript: RegViz。
- .NET: Regex Storm [GitHub].
- PCRE: PHP Live Regex。
- Python: Pythex。
- Ruby: Rubular。
- sed: GNU sed REPL。
- Swift: Swift Regex [GitHub] - 正規表現デバッガーとDSLビルダーを含む
複数の味
- 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) - ファイル名のリネームには正規表現を使用。
チュートリアル
正規表現の使い方を学ぼう.
従来型
- Regular-Expressions.info - 多数の正規表現の味をカバー。
- The Modern JavaScript Tutorial: Regular expressions [GitHub] - JavaScriptにおける正規表現の使い方ガイド。
- Languages: 🇺🇸, 🇪🇸, 🇫🇷, 🇮🇹, 🇯🇵, 🇷🇺, 🇺🇦, 🇨🇳 (partial for others).
✳️ Notable mentions
- RexEgg - 詳細なチュートリアル(高度なトピックを含む)。
- learnbyexample [GitHub] - 正規表現に関する電子書籍(JavaScript, Python, Ruby)
- Regular Expressions for Regular Folk [GitHub] - 初心者向けの視覚的かつ例に基づいた電子書籍。
対話型演習付き
- RegexLearn [GitHub] - 交互式チュートリアルと練習問題。
- Languages: 🇺🇸, 🇹🇷, 🇷🇺, 🇪🇸, 🇨🇳, 🇩🇪, 🇺🇦, 🇫🇷, 🇵🇱, 🇰🇷, 🇧🇷, 🇨🇿, 🇬🇪.
- RegexOne - 交互式チュートリアルと練習問題。
動画
- Demystifying Regular Expressions - Lea Verouによる初心者向けの素晴らしい講演(HolyJS 2017、1時間12分)。
- Learn Regular Expressions In 20 Minutes - Kyle Cookによる正規表現テストツールでの実時間構文解説。
- Many options for video courses are available on Udemy ($).
正規表現エンジン
主要な正規表現の実装例:プログラミング言語に組み込まれたものや、独立したライブラリとして提供されているもの.
ドキュメント
公式の正規表現リファレンスとガイド.
正規表現フレーバー
- Boost.Regex: Manual。
- C++: Regular expressions library。
- Hyperscan: Introduction。
- ICU: Regular Expressions。
- Java: Pattern, API.
- JavaScript: RegExp, Reference, Guide, Cheatsheet.
- .NET: Overview, Language, API.
- Onigmo: RE。
- Oniguruma: RE。
- PCRE2: Pattern, API.
- Perl: Syntax, Tutorial, Quick Start.
- Python: re。
- RE2: Syntax。
- Rust: regex - 参照: regex-lite.
- Swift: Regex - 参照: RegexBuilder, NSRegularExpression.
ℹ️ Raku(かつてはPerl 6)が正規表現を再構築する。詳細は: Grammars (tutorial), Regexes (best practices)。
独自フレーバーを持たない実装
- Go: regexp - 味:RE2.
- MySQL: Regular Expressions - 味:ICU.
- PHP: Regular Expressions - 味:PCRE.
- Ruby: Regexp - 味:Onigmo.
ソースコード
主要な正規表現実装の背後にあるコードを読むか、貢献するか。
- Boost.Regex - C++ リグレクスライブラリ.
- Hyperscan - インテルの高性能ライブラリ、 DPI に使用.
- ICU - Unicode org のパッケージで、完全な Unicode サポートを提供.
- Java: java.util.regex - JDK の標準リグレクス.
- JavaScript:
- JavaScriptCore: RegExp - Safari が使用するリグレクスエンジン.
- V8: Irregexp - Chrome、Edge、 Firefox などに使用されるリグレクスエンジン.
- .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 - バックトラッキングエンジンではない。
フレーバー間の違い
正規表現の種類ごとの構文と動作の違い。
- Ron Buckton: Regular Expression Feature Comparisons [GitHub].
- Regular-Expressions.info: Tools & Languages。
- Steven Levithan: Named capture, Lookbehind.
- Wikipedia: Comparison of regular expression engines。
性能
パターンとエンジンのパフォーマンス、ベンチマーク、および ReDoS 防止。
効率的な正規表現の作成
- Runaway Regular Expressions: Catastrophic Backtracking - 超線形バックトラッキングの探索と解決法
- Book: High Performance JavaScript (2010) - 第5章:文字列と正規表現.
- Book: Mastering Regular Expressions, 3rd Edition (2006) - 第6章:効率的な表現の構築.
- Performance of Greedy vs. Lazy Regex Quantifiers - バックトラッキングの仕組みを示す
ℹ️ バックトラッキングエンジンを使用する場合、正規表現の構成方法が一致するマッチや失敗の報告速度に影響を与えることがあります。
正規表現エンジンの最適化
- Regular Expression Matching Can Be Simple And Fast - バックトラッキングのないエンジンについて。 follow up にはRE2とPCREの性能比較が含まれる
- Regular Expression Improvements in .NET 7 および .NET 5 - パフォーマンス最適化の詳細な説明を含む
- ripgrep is faster than {grep, …} - リプグレとRustの
regexが高速である理由についての詳細を含む
ベンチマーク
- Cross-engine benchmarking libraries: rebar, regex-benchmark.
- Boost.Regex: Performance - Boost、C++
std::regexなどとの比較
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)
抽象化された正規表現構文
- Rexx - 構造化された構文に変数とコメントを用いたテンプレートタグ
- Melody [docs] - 正規表現にコンパイルされる言語
- Compose with functions: compose-regexp.js, VerbalExpressions (many languages向けの実装), magic-regexp [home], Super Expressive [playground]
正規表現プロセッサー、ユーティリティなど
- AST builders: regexpp, regexp-tree, regjsparser/regjsgen, regexp-simple-parser.
- AST explorers: AST Explorer: RegExp, JS RegExp AST Viewer.
- regexp-ast-analysis [docs] - regexppによって生成されたASTノードを分析
- eslint-plugin-regexp [home] - 正規表現の誤りなどを検出するESLintプラグイン
- arkregex - TS型を持つ
RegExpに相当するコンストラクタ - super-regex - 正規表現に実行タイムアウトを追加
- Partial regex matching: regex-partial-match, incr-regex-package.
- regex-utils - 正規表現の等価性を確認、正規表現の交差を構築など、その他のユーティリティ
- Generate strings that match a given regex: randexp.js, regex-to-strings.
- regexgen - 複数の文字列に一致する正規表現を生成
- Regex Colorizer [home] - 正規表現の構文をハイライト
- regex-to-mermaid - 正規表現を可視化するMermaid図を生成
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 tolastIndex. - Flag
u(unicode) [explainer] [2016 spec fix], これは\u{…}を通じてユニコードコードポイントエスケープを追加し、未指定エスケープ、八進数エスケープ、量化された先行確認、および特定の文脈における未エスケープ特殊文字に対して厳密なエラーを発生させ、フラグiにおけるユニコードケースフォールディング、およびコードポイントマッチング(量化子、文字クラス、範囲、および組み込みセットに影響)を提供する。 - Getter
RegExp.prototype.flags, the ability to copy a regex usingRegExp(optionally with new flags), and support for subclassingRegExp(along withRegExp.prototype[Symbol.match/replace/search/split]andRegExp[Symbol.species]).
- Flag
- 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ではフラグ
v(unicodeSets)[解説]が追加されました。これはフラグ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 methodreplaceAll, although the only difference from ES3’sreplacewhen given a regex is that it throws if not using flagg.
➕ See also
- Regexes Got Good: The History And Future Of Regular Expressions In JavaScript
- Backcompat libraries: regexpu, regenerate (Unicode property sets).
- Chrome’s
l(linear) regex flag, behind a V8 flag [explainer] [how to run]. - Can I use - 個別の機能に対する最新のブラウザサポート表。
🔮 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) マイケル・フィッツジェラードによる - 正規表現にまだ慣れていないプログラマ向けの導入書で、基本を厳密に扱う。
記事
選ばれた正規表現に関する記事の一覧.
- The World’s Shortest Regex Compiler? および最適化に関する follow up - JavaScriptで非バックトラッキング正規表現エンジンを書くための導入。
- Regex Legends: The People Behind the Magic - 影響力を持つ技術の人物たち.
コミュニティ
正規表現を議論し、支援し、助けを求める.
その他
その他、興味深い、楽しい、そして便利なコンテンツです。
- Quiz: regex101 Regex Quiz - ログインが必要です。
- Games: Regex Crossword, regexle, The Typing of the RegEX, Regex Machina ($).
- Comics: xkcd, Garabato Kid.
このリストについて
Awesome Regex は Steven Levithan と contributors によって作成されました。
スポンサーと支援者
過去のスポンサー
もしこのプロジェクトを支援したいなら、改善点を提供したり、他人に共有したり、あるいは sponsoring 進行中の開発に協力していただけると嬉しいです。
© 2024–present. CC BY 4.0。