7

「not」のすべての出現を検索したいのですが、「not good」または「not bad」という用語は含まれていません。

たとえば、「not not good, not bad, not mine」は、最初と最後の「not」に一致します。

Pythonでreパッケージを使用してそれを達成するにはどうすればよいですか?

4

1 に答える 1

8

否定先読みアサーションを使用します。

\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ので、パフォーマンスのために指定します。

于 2012-12-28T04:16:02.757 に答える