如何编写下面所有三种情况都匹配的正则表达式?路径,文件和查询字符串必须准确。域部分可以是以下(域名/ IP地址)的任何变体
http://www.example.com/path1/path2/foobar.aspx?id=123&key=456
https://www.example.com/path1/path2/foobar.aspx?id=123&key=456
64.123.456.789/path1/path2/foobar.aspx?id=123&key=456
基本上,只需要匹配 /path1/path2/foobar.aspx?id=123&key=456 。它前面的部分可能是引导用户访问该网站的任何变体。
答案 0 :(得分:0)
\.[^/]+(.*)
此RegEx 捕获地址的相对路径。这意味着您将需要在使用的程序中获取匹配项的捕获,而不是匹配的字符。
\. Gets the first dot of the address [^/]+ Matches all characters that aren't forward slashes (.*) Captures the rest of the address
进一步的说明
我之所以不能匹配(而不是捕获)地址,是因为我没有任何表达式可以明确表示地址的开头相对路径(无需匹配其他任何字符)。
这是因为某些地址具有协议部分(例如:http://
),而另一些则没有。额外的两个正斜杠意味着RegEx会变得更长一些,以便验证我们是否使用正确的正斜杠。
由于所有地址(据我所知)在域(www.something.com
或64.123.456.789
)中都有一个点,因此我使用了第一个点。由于域始终位于相对路径之前,因此我们可以跳到下一个正斜杠并始终到达相对路径。
然后,我们只需捕获地址的其余部分(包括第一个正斜杠),即可轻松获取。