モジュールのレッスン (3/4)
後読み: `(?<=...)` `(?<!...)`
後読みは先読みの鏡像であり、前を参照します。 現在の位置、まだ幅がゼロです。
(?<=...)-- ポジティブ後読み: パターンは先行する必要があります。(?<!...)-- 負の後読み: パターンを先行させてはなりません。
Pattern: (?<=\$)\d+
Sample: Costo $100, sconto -25, totale $75.
^^^ ^^$ は一致には含まれていませんが、条件として機能します: 数字のみ
前にドル記号が一致します。
否定的な後読み
Pattern: (?<!\w)\d+
Sample: Codice abc123 e numero 456.
^^^(?<!\w) では、数字の前に単語文字が存在しないことが必要です。
abc123 は除外されます (123 の前には c、\w があります)、456 は一致します (123 の前には
スペースがあります)。
非捕捉グループとの主な違い
\\$\\d+ matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+ matches "100": the match contains ONLY the digits.プレフィックスのない「クリーンな」値を抽出する必要がある場合は、lookbehind 正しい選択です。
JavaScript における後読み互換性
正の (?<=...) と負の (?<!...) の後読みは、現在位置より前にあるものを確認します。 JavaScript では、ES2018 以降でサポートされます。古いブラウザや従来の Node.js エンジンでは、構文コンパイル エラーが発生します。
試してみてください
テキスト内の価格から金額 ($ 記号なし) のみを抽出します。
ヒントを表示
\\$ を正の後読み (?<=\\$) 内に移動します。位置条件であり、一致の一部ではありません。
3 回の試行後に解決策が利用可能になります
復習演習
文字や数字が前にないすべての数字のシーケンスを検索します (つまり、「abc123」のようなコードの一部ではなく、「分離された」数字)。
ヒントを表示
前に文字または数字がある場合は、負の後読み (?<!\\w) を使用して除外します。
3 回の試行後に解決策が利用可能になります
追加の課題
Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.
ヒントを表示
マイナス記号 - を正の後読み (?<=-) 内に移動します。
3 回の試行後に解決策が利用可能になります