コンテンツへスキップ
uencoder

正規表現の後読みアサーションを使う

後読み (?<=...) と (?<!...) は、現在位置の前にある内容をアサートします。モダンなエンジン(ES2018+、Java、.NET、PCRE)でサポートされています。

  1. 1

    後読み (lookbehind) は、現在位置の前にあるパターンをアサートします。肯定 (?<=...) はその存在を要求し、否定 (?<!...) はそれを禁止します。後読みはゼロ幅です。先読みと異なり、一部のフレーバー (Java、10.0 より前の PCRE) では後読みは固定長でなければなりませんが、.NET、JavaScript (ES2018 以降)、PCRE 10.0 以降では可変長もサポートされます。

  2. 2
    正規表現テスター →

    後読みパターンをテストします。(?<=\$)\d+ はドル記号の後の数字にマッチします。"$100" では "100" にマッチします。(?<!\d)\d+(?!\d) は (他の数字に隣接しない) 単独の数字にマッチします。後読みは、前にある文字を消費せずに確認します。

  3. 3
    正規表現置換ツール →

    置換で後読みを使います。(?<=\b\w)\w を * に置き換えると、各単語の先頭文字以外をマスクできます。"hello world" → "h**** w****"。後読みが単語構成文字が前にあることをアサートするため、先頭文字は置換されません。

よくある質問

後読みはすべてのブラウザーでサポートされていますか?
後読みは ES2018 以降 (Chrome 62 以降、Firefox 78 以降、Safari 16.4 以降) でサポートされています。古い Safari や一部の正規表現フレーバーではサポートされません。最大限の互換性が必要な場合は、先読みを使う形にパターンを書き換えるか、ポリフィルや前処理のアプローチを使ってください。
可変長後読みとは何ですか?
パターンがさまざまな長さにマッチできる後読みです。(?<=ab|abc)d は "ab" または "abc" に先行される d にマッチします。.NET、JavaScript (ES2018 以降)、PCRE 10.0 以降でサポートされますが、Java や古い PCRE ではサポートされません。固定長のみのフレーバーでは、同じ長さの選択肢による OR 表現を使うか、パターンを再構成してください。

このタスクを解決するワークフロー

関連ツール