2

ファイアウォールがアダルトサイトをブロックするために使用するキーワード「cum」があります。問題は、「document」という単語を含むURLもブロックするため、これが少しうまく機能することです。

ファイアウォールは正規表現文字列を受け取ります、そして私はこれを試しました:

^.*(?!document)cum.*$

しかし、それはまだ「ドキュメント」と一致します。パイプを使うべきだと感じています|が、うまくいきません。

私が欲しいのはどこにでもマッチすることです

*cum*

はURL(またはドメイン名)にありますが、単語がdocumentまたはの場合は見つかりませんdocuments

可能?私が理解しているように、ここでは単語の境界は機能しません。これcumは、URL内にある場合、ドメイン名内にある場合は、単語が必ずしも空白で区切られるとは限らないためです。

別の言い方をすると、次のようになります。

Allow "examplesearchdocuments.com"
Allow "examplemydocuments.com"
Allow "documentexample.com"
Allow "example.com/somedocuments"
Don't allow "funnycumsiteexample.com"
Don't allow "cumallovereverythingexample.com"
Don't allow "exampleseemycum.com"

cum悪い言葉が一致するところ。これらの例のいずれかが実際のサイトである場合は申し訳ありませんが、これを他に伝える方法がわかりません。

4

2 に答える 2

2

コメントによると、私は間違っていました。

先読みの中で後読みを使用する場合、「ドキュメント」という単語内にない場合にのみ、「兼」と一致させることができます。

cum(?!(?<=docum)ent)

ルックアラウンドhttp://www.regular-expressions.info/lookaround.htmlに関するいくつかの読み物があります

ここでは、多数のテストに反対しています。

http://www.rubular.com/r/b5iZrn6Cjz

于 2012-08-28T16:14:24.137 に答える
0

私の最初の提案は他\bcum\bのものとして使用することでもありますが、それは例えばカミングとは一致しません。

ネガティブルックアラウンド(?!)構文はほぼ正しいです。

  • ネガティブルックビハインドには、<
  • ネガティブな先読みについては、必要はありません>
  • 詳細については、http://www.regular-expressions.info/lookaround.htmlを参照してください。

^.*(?<!do)cum(?!ent).*$

また

^.*(?<!do)cum(?!ents?).*$

複数形をサポートします。提供した例については、Javaをクリックしてhttp://fiddle.re/3pyjで確認できます。

私の提案は^.*\bcum.*$、単語の境界、つまり単語の開始と「兼」およびその後のすべてに一致させることです。

于 2012-08-28T16:14:37.753 に答える