0

次の形式のURLの膨大なリストがあります。

最後の3つのURLを取得するためにどのRegExを使用できますが、最初の2つを見逃しているため、都市が接続されていないすべてのURLが指定されますが、都市があるURLは拒否されますか?

注:私はGoogle Analyticsを使用しているため、RegExを使用して高度な機能でURLを監視する必要があります。現在、Googleは各正規表現を拒否しています。

4

4 に答える 4

1

一般的に、正規表現を使用してURLを解析するために私ができる最善の提案は、しないことです。

あなたの時間は、URLを処理するタスク専用のあなたの言語のために存在するライブラリを見つけることにはるかによく費やされます

それはすべてのエッジケースを解決し、RFCに完全に準拠し、バグがなく、安全で、優れたユーザーインターフェイスを備えているため、本当に必要なビットを吸い出すことができます。

あなたの場合、それを処理するための提案された方法は、URLライブラリを使用して、要素を抽出し、それらを明示的に操作することです。

そうすれば、せいぜい自分でパスに対処する必要があり、そのパスについてそれほど心配する必要はありません。

http://site.com/
https://site.com/
http://site.com:80/ 
http://www.site.com/ 

あなたが本当にしたいのでなければ。

「パス」の場合は、念のため、最初にパスを要素にトークン化するためにスプリッター(または専用のパスパーサー)を使用することもできます。

于 2009-07-17T14:47:19.623 に答える
0

tj111の現在のソリューションは機能しません-すべてのURLに一致します。

これが機能するものです(そして私はあなたの値をチェックしました)。また、末尾にスラッシュがあるかどうかに関係なく、一致します。

http:\/\/.*dest\/\w+/?$
于 2009-07-17T14:47:42.883 に答える
0
/http:\/\/www\.site\.com\/dest\/\w+\/?$/i

それらがすべて同じサイトであり、そこに「宛先」がある場合に一致します。これを行うこともできます:

/\w+:\/\/[^/]+\/dest\/\w+\/?$/i

これは、任意のサイトと任意のプロトコル(http、ftp)、および任意のサイトの最後に/ dest / country、およびオプションの/を一致させます。

これは、URLが合法的になり得るサブセットでのみ機能することに注意してください。

于 2009-07-17T14:51:32.280 に答える
0

この正規表現を試してください:

^http://www\.example\.com/dest/[^/]+/$

これは、最後の3つのURLにのみ一致します。

于 2009-07-17T14:55:41.430 に答える