2017-05-09 10 views
0

を働いていない私はregexlibに、この正規表現を見つけました:正規表現は、URLのため

\b([\d\w\.\/\+\-\?\:]*)((ht|f)tp(s|)\:\/\/|[\d\d\d|\d\d]\.[\d\d\d|\d\d]\.|www\.|\.tv|\.ac|\.com|\.edu|\.gov|\.int|\.mil|\.net|\.org|\.biz|\.info|\.name|\.pro|\.museum|\.co)([\d\w\.\/\%\+\-\=\&\?\:\\\"\'\,\|\~\;]*)\b 

私のURLは記号で終わっていない限りそれは正常に動作します。

テスト文字列:

http://localhost/MySite/Default.aspx?dl=TzV+1tS9W13zQX0NBLpQWS3gzszG5g59814C2PCXb0RqECKPsJ0n087YRaQ4w9iFIM86q8jBfQL3KoOkh79yUjSAV1XtJC4oL9sxeTmegFfD+TvbT/AZgCHpBgk1qOILqrILnpVKe/JWq0QISestnbOT/bq1KrTmHIlZVYuYC0jX2aCLYw2pOYV04Di43mMZNFwhL97m30XEBF2zFXTqyR8JYN0mOEdB4bpdN7SmTvwOzk6GE1paaKnGA0SEJA6+cm9azUrpl5/HIBmMt9I0CgRr+AlWZRlsZU1c+6ZUrX0rWWjUeeN5JHlNcHk0TGuMiuyEt5hmfAPXpxATe0fDXw== 

は正規表現が含まれ得ることはありません最後の2つの等号までのURLをキャッチします。

私はいくつかの正規表現パターンを無駄にしようとしました。そして、私はこの1つで約1時間猿と一緒に幸運を尽くそうとしていました。私はちょうど十分正規表現を知らない!

提案?

答えて

1

ちょうど私がURLを推測している

\b([\d\w\.\/\+\-\?\:]*)((ht|f)tp(s|)\:\/\/|[\d\d\d|\d\d]\.[\d\d\d|\d\d]\.|www\.|\.tv|\.ac|\.com|\.edu|\.gov|\.int|\.mil|\.net|\.org|\.biz|\.info|\.name|\.pro|\.museum|\.co)([\d\w\.\/\%\+\-\=\&\?\:\\\"\'\,\|\~\;]*)\b[=]* 

のような終わり[=]*を追加するには、複数の=に終わるかもしれないベース64件のデータが含まれています。したがって、[=]*を追加すると、regexは0以上の等号を期待します。

+0

URLの末尾に任意の記号(と等しくない記号)を含めるようにパターンを変更するにはどうすればよいですか? – GoDogGo

+0

私はあなたの答えに基づいてそれを得たと思う@gaganshera。以下より効率的な方法がありますか? \(\ d \ d \ d | d)\ \(\ d \ w \ \。\ d \ d] \。[\ d \ d \ d \ d \ d] \。| www \。| \ .tv | \ .ac | \ .com | \。edu | \ .gov | \ .int | \。\ | \。\\ \\ \\ .co)(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ < @、+、!、%、&、*、 - ])* \ - \ = \ & \?\:\\\ " \ ' – GoDogGo

+1

正規表現の区切り文字としてカンマを使用しないでください。 * \ b([\ d \ w \。\/\ + \ - \?\:] *)((ht | f)tp(s |)\のような文字をエスケープする必要があります。 :\。\ | | \。\ | \ d \ d] \。\ www \ .dv \ .com | \ .edu | \ .gov | \ .int | \ .mil | \ .net | \ .org | \ .biz | \ .info | \ .name | \ .pro | \ .museum | \ .co ([= @ +!])\ b。[\ d \ w \。\/\%\ + \ - \ %&\ *、 - ])* ' – gaganshera