3

私は次の正規表現を持っています

Regex(@"(^http|https)://(w){0,3}(\.)?(.)*lycos\.(.)*/(.)*(&|\?)(q|query)=(.)*")

私はそれを以下と一致させたい:

http://search.lycos.com/web?q=cautare

しかし、それは以下と一致するべきではありません:

http://www.google-analytics.com/__utm.gif?utmwv=5.3.9&utms=1&utmn=932580756&utmhn=search.lycos.com&utmcs=utf-8&utmsr=1920x1080&utmvp=1920x979&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=11.6 r602&utmdt=searchmeup - lycos&utmhid=2063854819&utmr=0&utmp=/web?q=searchmeup&utmac=ua-2342215-18&utmcc=__utma=1.950014844.1362381742.1362387055.1362404209.3;+__utmz=1.1362387055.2.2.utmcsr=lycos.com|utmccn=(referral)|utmcmd=referral|utmcct=/;&utmu=qlag~

正規表現をより制限する方法はありますか?

4

2 に答える 2

2

(.)*(これは実際には である必要があります)(改行.*を除く)すべてに一致します。そのため、パターンは非常に寛容です。

だから代わりに

Regex(@"(^http|https)://w{0,3}(\.)?.*lycos\..*/.*(&|\?)(q|query)=.*")

.たとえば[^/]、非スラッシュ文字、\w英数字、または\S非スペース文字に対して、以外のトークンを適用できます。

Regex(@"(^http|https)://w{0,3}(\.)?\w*\.lycos\.[^/]*/[^&?]*(&|\?)(q|query)=\w*")
于 2013-03-04T14:25:11.973 に答える