「not」のすべての出現を検索したいのですが、「not good」または「not bad」という用語は含まれていません。
たとえば、「not not good, not bad, not mine」は、最初と最後の「not」に一致します。
Pythonでreパッケージを使用してそれを達成するにはどうすればよいですか?
否定先読みアサーションを使用します。
\bnot\b(?!\s+(?:good|bad))
これは、とが文字列の直後にnotある場合を除いて、に一致します。またはではなくという単語に確実に一致するように、単語境界を追加しました。goodbadnot\bnotnotnothingknot
\b単語境界です。前の文字が単語文字で、後の文字がそうでないこと、およびその逆であることを確認します。単語の文字は、通常、英語のアルファベット (az、AZ)、数字 (0-9)、およびアンダースコア(_) ですが、正規表現のフレーバーによってはさらに多くの文字が含まれる場合があります。
(?!pattern)patternゼロ幅の負の先読みの構文です。現在のポイントから、入力文字列で指定された先読みが見つからないことを確認します。
\s空白文字を示します (スペース (ASCII 32)、改行\n、タブ\tなど - 詳細についてはドキュメントを確認してください)。勝手に合わせたくない場合は、 (スペース)に置き換え\sてください。
+inは、前のトークンの\s+1 つ以上のインスタンスに一致します。この場合は、空白文字です。
(?:pattern)非キャプチャ グループです。goodとをキャプチャする必要がないbadので、パフォーマンスのために指定します。