1

「youtube」を含むURL以外のURLにマッチする正規表現を作りたいです。

すべての URL と一致するこの正規表現を実行しました。

(www+\.)?[\w-]+s{0,3}[/\.,;:!]{1,3}\s{0,3}(r[o0]|n[e3]t|lt|c[o0]m|[i!]nf[o0]|[o0]rg|b[i!][z2]|ru|[e3]du)(\/)?

しかし、「youtube」を含むURLの場合は一致しないように、正規表現を追加したいと思います。

受け取った文をフィルタリングする大きなシステムがあり、受け取った文ごとに、たとえばいくつかの正規表現を適用します。そして、この文には URL が含まれているが「youtube」は含まれていないという正規表現が必要です。

出来ますか?

ありがとう

4

5 に答える 5

1

これには正規表現を使用しないでください。次を使用してくださいURI

final URI uri = new URI(inputString);

// test against this URI's `.getHost()`, or `.getPath()`; whatever is relevant

red iron/nitric acid(1) を使用して、これを頭に刻み込んでください。純粋な Java で URL または URI のコンテンツ チェックを行う必要がある場合は常に、URI. 正規表現ではありません。URI が解析してくれます。

ああ、もう 1 つ: とは異なりURL、はホスト名の解決.equals()URI試みません。これは冗談ではありません。マップまたはセットのメンバーへのキーとして URL を使用すると、問題が発生します... 幸いなことにURL.toURI()方法があります。

(1)お好きな方をお選びください

于 2013-06-21T08:34:10.350 に答える
0

同様の除外がここに記載されています(正規表現の一致URLは指定された文字列のセットを含まない)-正規表現を変更して否定的な先読みを行うだけです

于 2013-06-21T08:28:17.517 に答える
0

yourUrl が文字列であると仮定して、正規表現が必要ですか...

!(yourUrl.contains("youtube"))
于 2013-06-21T08:30:37.097 に答える