51

「boon.ini」や「http」などの単語に遭遇すると失敗する式が必要です。目標は、この式を取得して、任意のキーワード セットを構築できるようにすることです。

4

7 に答える 7

53
^(?:(?!boon\.ini|http).)*$\r?\n?

RegexBuddyのライブラリから取得)boon.iniおよび/またはhttpを含まないすべての行に一致します。それはあなたが望んでいたことですか?

于 2008-09-22T19:14:24.303 に答える
15

使用できる代替表現:

^(?!.*IgnoreMe).*$

^= 行の開始を示す
$= 行の終了を示す
(?! Expression)= ゼロ幅の先読みを示す 式の負の一致

^そうしないと、評価時に「IgnoreMe」テキスト内/外のどこかから否定的な先読みが開始され、不要な場所でも一致する可能性があります。

たとえば、正規表現を使用する場合:

(?!.*IgnoreMe).*$

「Hello IgnoreMe Please」と入力すると、「gnoreMe Please」のような結果になります。これは、否定先読みが「I」の後に完全な文字列「IgnoreMe」がないことを検出するためです。

于 2009-05-06T21:58:10.603 に答える
13

式内の結果を否定するのではなく、コードで否定する必要があります。そうすれば、式はかなり単純になります。

\b(boon\.ini|http)\b

trueboon.iniまたはhttpが文字列のどこかにある場合に返されます。\b、または単語の境界があるため、httpdやhttpxyzzyなどの単語とは一致しません。必要に応じて、それらを削除するだけで、それらも一致します。キーワードを追加するには、パイプを追加するだけです。

\b(boon\.ini|http|foo|bar)\b
于 2008-09-22T19:14:08.283 に答える
4

探している単語に遭遇したときに成功する正規表現を記述して、条件を逆にすることで、十分に役立つ可能性があります。

たとえば、perlでは次を使用します。

if (!/boon\.ini|http/) {
    # the string passed!
}
于 2008-09-22T19:16:56.547 に答える
2
^[^£]*$

上記の式は、文字列からポンド記号のみを制限します。これにより、文字列を除くすべての文字が許可されます。

于 2010-05-09T16:18:01.450 に答える
1

どの言語/正規表現ライブラリ?質問はASP.NETに関するものだと思いました。その場合、この記事の「ネガティブルックヘッド」セクションを見ることができます:http: //msdn.microsoft.com/en-us/library/ms972966.aspx

厳密に言えば、正規表現の否定は、正規言語を定義しますが、それを表現できるライブラリ/言語/ツールはほとんどありません。

ネガティブなlookahedでも同じように機能する場合がありますが、実際の構文は使用しているものによって異なります。ティムの答えは(?...)

于 2008-09-22T19:29:20.633 に答える
0

これを (Tim Pietzcker の回答に基づいて) 使用して、Google アナリティクス プロファイル フィルターの非運用サブドメイン URL を除外しました。

^\w+-*\w*\.(?!(?:alpha(123)*\.|beta(123)*\.|preprod\.)domain\.com).*$

ここでコンテキストを確認できます:複数の単語を除外する正規表現

于 2013-10-28T18:07:05.843 に答える