我需要一些正则表达式的帮助,因为我在螺旋中写了一条新规则。
示例网址将包含文件名和我希望在两者上匹配的查询字符串参数
www.testwebsite.com/hello.aspx?filename=/test.asp&employeeid=2100&age=20
在上面的url我想检查它是否是hello.aspx并且有查询字符串filename=/test.asp
filename可以在查询字符串中的任何位置。
我想将上述网址拆分为其他网页
mynewpage.aspx $2$3 etc///
我写了以下网址,但它不起作用,它匹配所有类似sample1.aspx或任何文件名的模式
(.*)(\/hello.aspx\?+)(.*)(filename=\/test\.asp)(.*)
任何帮助将不胜感激
答案 0 :(得分:1)
您需要的是non capturing groups:
(?:.*)(\/hello.aspx\?+)(?:.*)(filename=\/test\.asp)(?:.*)
["www.testwebsite.com/hello.aspx?filename=/test.asp&employeeid=2100&age=20", "/hello.aspx?", "filename=/test.asp"]
(?:.*)(\/hello.aspx\?+)(?:.*)(filename=\/test\.asp)(.*)
["www.testwebsite.com/hello.aspx?filename=/test.asp&employeeid=2100&age=20", "/hello.aspx?", "filename=/test.asp", "&employeeid=2100&age=20"]
如果你想获得所有parameters separately from the query string,你可以这样做:
string queryString = (new Uri("...")).Query;
NameValueCollection parameters = HttpUtility.ParseQueryString(queryString);
parameters.Get("filename");
parameters.Get("employeeid");
parameters.Get("age");