次の項目は別ページに分割しました。
数字に合致させる
参考:
単語に合致させる
\b: 単語の先頭または末尾に合致する\B: 単語の先頭及び末尾以外に合致する
参考:
「\b、\B」 – 単語の先頭と単語の末尾にマッチする | JavaDrive
日本語文字に合致させる
参考:
漢字/ひらがな/カタカナにマッチさせる方法 | so-zou.jp
全角文字/半角カナ
参考:
漢字
\p{Han}: Unicode プロパティで漢字に一致させる (日中韓)
参考:
Han – UnicodeSet Utilities | Unicode [Official]
Unicode 文字プロパティ
標準でサポートされている言語
- PHP
 - Ruby
 - JavaScript
 - Perl
 
外部ライブラリでサポートされている言語
- Python:regex / onigurumacffi
 
参考:
Unicode プロパティを用いた正規表現で日本語を抽出 | 株式会社シーポイントラボ
Unicode 文字プロパティ | PHP Manual [公式]
Property Value Lists – Character Database | Unicode [Official]
Property Value Aliases – Character Database | Unicode [Official]
キャプチャ/グルーピング
キャプチャせずにグループ化する。
(?:hi|hello|bye)
参考:
キャプチャグループを使って正規表現パターンの一部にマッチした文字列を取得する | JavaDrive
キャプチャしない正規表現は () にする・・・って、え? | 負け犬プログラマーの歩み
何にも合致しない正規表現
(?!.*)
参考:
正規表現 `$^` は何にマッチするか/アンカーの正しい理解に向けた確認 – Qiita
Regex to *not* match any characters – Stack Overflow
ハイフン
参考:
正規表現の文字クラスにハイフンを含みたいときは、ハイフンを最初または最後に書く | My External Storage
最短マッチ
*? は最左最短マッチを意味する。合致の開始位置が最も左で、合致長さが短いものが選択される。
# Ruby
"<<<hoge>>>".match(/<.*?>/)[0]
# => "<<<hoge>"Code language: Ruby (ruby)
参考:
後方参照
参考:
後方参照によるパターン内での参照 – Perl | JavaDrive
Backreferences to Match the Same Text Again | Regular-Expressions.info
バックトラック
参考:
正規表現のパフォーマンスの話をされても全くピンと来なかった僕は、backtrack に出会いました – Qiita
`.*` や `.+` がバックトラックで不利な理由 | TechRacho
正規表現のコストパフォーマンスについて | リグレックス株式会社
パフォーマンスを意識して正規表現を書く | Shin x Blog
破壊的なバックトラック | 現代の JavaScript チュートリアル
What does “?>” mean in a PCRE regex? – Stack Overflow
パフォーマンス
参考:
regex クレートを歩く 固定文字検索編 | しばイヌとお茶
絶対最大量指定子
「円」の付かない数字に合致させる。
\d++(?!円)
または、絶対最大量指定子を使わない場合は次のようにする。
\d+(?!円|\d)
参考:
非包含オペレータ
非包含オペレータを使用して、C言語のコメントブロックに合致させる。
\/\*(?~\*\/)\*\/
代替
- 最短一致:
\/\*.*?\*\/ - バックトラックの抑制:
\/\*(?>.*?\*\/) - 否定先読み:
\/\*((?!\*\/).)*\*\/ 
参考:
Ruby 2.4.1 新機能: Onigmo 正規表現の非包含演算子 (?~ ) をチェック | TechRacho
The New ‘Absent Operator’ in Ruby’s Regular Expressions (Peter Cooper) | Ruby Inside
正規表現における非包含オペレータの提案 (スライド/PDF) | 田中哲
正規表現における非包含オペレータの提案 (論文/PDF) | 田中哲
パターンマッチング/文字列アルゴリズム
- 総当たり/ブルートフォース
 - クヌース・モリス・プラット法 (KMP)
 - ボイヤー・ムーア法 (Boyer-Moore)
 - Bitap
 - ラビン・カープ (Rabin-Karp)
 - トライ木/プレフィックス木 (Trie Tree / Prefix Tree)
 - 正規表現
- DFA 型:決定性有限オートマトン (DFA) に変換する。
 - VM 型:仮想マシン (VM) 上のバイトコードに変換して実行する。
 
 - 接尾辞配列 (Suffix Array)
 - 接尾辞木 (Suffix Tree)
 - Burrows-Wheeler 変換
 - FM-index
 
参考:
文字列アルゴリズムの学びかた | Hatena Developer Blog
ボイヤー-ムーア文字列検索アルゴリズム – Wikipedia
ラビン-カープ文字列検索アルゴリズム – Wikipedia
空白の扱い
参考:
RegEx for Horizontal Whitespace (\s \h blank etc) – Keyboard Maestro Discourse
まとめ/チートシート/Tips
VSCode でカンタン!正規表現置換のためのチートシート | 銀ねこアトリエ
sed コマンドで覚えておきたい使い方 12個 (+3個) | 俺的備忘録
オンラインツール
Regex101 – Build, Test, and Debug Regex
Regular-Expressions.info
公式サイト:
Regular-Expressions.info – Tutorial, Examples and Reference
参考:
Quick Start | Regular-Expressions.info
Tutorial – Learn How to Use Regular Expressions | Regular-Expressions.info
Tools, Utilities and Programming Languages | Regular-Expressions.info