40

PCRE では、文字列が見つからない場合にのみ一致する式をどのように構築できますか。

grep を使用していた場合 (私はそうではありません)、-v オプションが必要です。

fooより具体的な例: 文字列が文字列内にない場合に、正規表現を一致させたいとします。したがって、 would には一致しますが、 には一致barしませんfoobar

4

5 に答える 5

67

さて、あなたが思いついた解決策に基づいて正規表現を改良しました (「test」で始まる文字列に誤って一致します)。

^((?!foo).)*$

この正規表現は、foo を含まない文字列のみに一致します。最初の先読みは 'foo' で始まる文字列を拒否し、2 番目の先読みは foo が文字列の他の場所に見つからないことを確認します。

于 2009-06-05T19:08:48.577 に答える
5

ダニエルの答えに基づいて、うまくいくものがあると思います:

^(.(?!test))*$

重要なのは、文字列内のすべての文字に対して否定的なアサーションを行う必要があるということです

于 2009-06-05T18:44:17.253 に答える
1

一致する式を作成し、!match()... (論理否定) を使用します。

于 2009-06-05T19:05:26.633 に答える
1

それは確かにほとんど重複しています。あなたが探している正規表現は

(?!foo).*

于 2009-06-05T18:37:46.783 に答える
-1

(Pythonで)これを行うには、を使用しre.split、正規表現に基づいて分割します。これにより、正規表現に一致しないすべての部分が返され、正規表現に一致しない部分に基づいて分割されます

于 2011-03-02T23:15:38.047 に答える