「boon.ini」や「http」などの単語に遭遇すると失敗する式が必要です。目標は、この表現を使用して、任意のキーワードセットを作成できるようにすることです。
^(?:(?!boon\.ini|http).)*$\r?\n?
( RegexBuddy のライブラリから取得)は、boon.iniおよび/またはhttpを含まない行に一致します。それはあなたが望んだことですか?
使用できる代替表現:
^(?!.*IgnoreMe).*$
^
=行の始まりを示します$
=行の終わりを示します(?! Expression)
=幅0の先読み式での負の一致を示します
^
が必要です。そうでない場合は、評価時にネガティブルックアヘッドが「IgnoreMe」テキスト内またはそれ以降のどこかから開始され、必要のない場所で一致する可能性があります。
例えば正規表現を使用する場合:
(?!.*IgnoreMe).*$
「Hello IgnoreMe Please」と入力すると、「gnoreMe Please」のような結果になります。否定的な先読みでは、「I」の後に完全な文字列「IgnoreMe」がないことがわかります。
式内の結果を否定するのではなく、コードでそれを行う必要があります。そうすれば、式は非常に単純になります。
\b(boon\.ini|http)\b
Boon.iniまたはhttpが文字列のどこかにある場合、true
を返します。 \b
または単語の境界のため、httpdやhttpxyzzyなどの単語とは一致しません。必要に応じて、それらを削除するだけで、それらにも一致します。さらにキーワードを追加するには、パイプを追加します。
\b(boon\.ini|http|foo|bar)\b
探している単語に遭遇したときにsucceedとなる正規表現を記述し、条件を逆にすることで、十分に役立つかもしれません。
たとえば、Perlでは次を使用します。
if (!/boon\.ini|http/) {
# the string passed!
}
^[^£]*$
上記の式は、文字列からポンド記号のみを制限します。これにより、string以外のすべての文字が許可されます。
どの言語/正規表現ライブラリですか?質問はASP.NETの周りにあると思いました。その場合、この記事の「ネガティブルックヘッド」セクションを見ることができます。 http://msdn.Microsoft.com/en-us/library/ms972966.aspx =
厳密に言えば、正規表現の否定は、依然として正規言語を定義しますが、それを表現できるライブラリ/言語/ツールはほとんどありません。
負のlookahedでも同じことができますが、実際の構文は使用しているものによって異なります。ティムの答えは(?...)
これを(Tim Pietzckerの回答に基づいて)使用して、Googleアナリティクスプロファイルフィルターの非実稼働サブドメインURLを除外しました。
^\w+-*\w*\.(?!(?:alpha(123)*\.|beta(123)*\.|preprod\.)domain\.com).*$
ここでコンテキストを確認できます。 複数の単語を除外する正規表現