「boon.ini」や「http」などの単語に遭遇すると失敗する式が必要です。目標は、この式を取得して、任意のキーワード セットを構築できるようにすることです。
7 に答える
^(?:(?!boon\.ini|http).)*$\r?\n?
(RegexBuddyのライブラリから取得)boon.iniおよび/またはhttpを含まないすべての行に一致します。それはあなたが望んでいたことですか?
使用できる代替表現:
^(?!.*IgnoreMe).*$
^
= 行の開始を示す
$
= 行の終了を示す
(?! Expression)
= ゼロ幅の先読みを示す 式の負の一致
^
そうしないと、評価時に「IgnoreMe」テキスト内/外のどこかから否定的な先読みが開始され、不要な場所でも一致する可能性があります。
たとえば、正規表現を使用する場合:
(?!.*IgnoreMe).*$
「Hello IgnoreMe Please」と入力すると、「gnoreMe Please」のような結果になります。これは、否定先読みが「I」の後に完全な文字列「IgnoreMe」がないことを検出するためです。
式内の結果を否定するのではなく、コードで否定する必要があります。そうすれば、式はかなり単純になります。
\b(boon\.ini|http)\b
true
boon.iniまたはhttpが文字列のどこかにある場合に返されます。\b
、または単語の境界があるため、httpdやhttpxyzzyなどの単語とは一致しません。必要に応じて、それらを削除するだけで、それらも一致します。キーワードを追加するには、パイプを追加するだけです。
\b(boon\.ini|http|foo|bar)\b
探している単語に遭遇したときに成功する正規表現を記述して、条件を逆にすることで、十分に役立つ可能性があります。
たとえば、perlでは次を使用します。
if (!/boon\.ini|http/) {
# the string passed!
}
^[^£]*$
上記の式は、文字列からポンド記号のみを制限します。これにより、文字列を除くすべての文字が許可されます。
どの言語/正規表現ライブラリ?質問は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).*$
ここでコンテキストを確認できます:複数の単語を除外する正規表現