メインコンテンツにスキップ
モジュール 6 · レッスン 2 / 4コース内の 22/32~10 min
モジュールのレッスン (2/4)

否定先読み: `(?!...)`

ネガティブ先読み (?!...) は、ポジティブ先読みの暗い姉妹です。 指定されたパターンが現在の位置に従わないことが必要です。それは まだ ゼロ幅: 文字は消費されません。

Code
Pattern: \d+(?! euro)
Sample:  Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
                                          ^^

75 のみが一致します。これは、後に続かない唯一の数字のシーケンスであるためです。 euro。数字 100 および 25 の後に euro が続き、 除外されます。

典型的な否定的な先読みパターン

  • ^(?!.*errore).*$ -- 「errore」という単語が含まれない行。
  • \b(?!the\b)\w+\b -- the ではない単語。
  • (?!\s) -- 現在の位置は空白ではありません (「トリム」として役立ちます)。
Code
Pattern: ^(?!.*\.bak$).*$
Sample (multiline with flag m):
  foto.jpg
  backup.bak
  documento.txt
Match: foto.jpg, documento.txt (excludes backup.bak)

否定先読みによる高度な除外

否定先読み (?!...) は、除外ロジック (パスワードに辞書の単語が含まれていないこと、または識別子が class や function などの予約キーワードではないことの検証など) を実装するために不可欠です。

試してみてください

運動#regex.m6.l2.e1
試行回数: 0読み込み中…

「ユーロ」が続かないすべての数字を検索します (したがって、ユーロ価格は除外されます)。

エディターを読み込み中…
ヒントを表示

「従ってはいけない」と言うには (?! ...) を使用します。 ` euro` シーケンスはその後に現れてはなりません。

3 回の試行後に解決策が利用可能になります

復習演習

運動#regex.m6.l2.e2
試行回数: 0読み込み中…

「the」ではない少なくとも 3 文字の単語をすべて検索します (大文字と小文字は区別されません)。

エディターを読み込み中…
ヒントを表示

\\b の直後に、単語 the のみを除外する否定先読み (?!the\\b) を開きます。

3 回の試行後に解決策が利用可能になります

追加の課題

運動#regex.m6.l2.e3
試行回数: 0読み込み中…

Find all words consisting of letters that do not contain the letter `x` at any position (e.g. match `test`, `game` but not `extra`, `box`).

エディターを読み込み中…
ヒントを表示

単語境界 \\b の直後に否定先読み (?!\\w*x) を使用します。

3 回の試行後に解決策が利用可能になります