需要有关正则表达式螺旋规则的帮助

时间:2011-05-13 22:27:33

标签: c# asp.net regex iis

我需要一些正则表达式的帮助,因为我在螺旋中写了一条新规则。

示例网址将包含文件名和我希望在两者上匹配的查询字符串参数

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)(.*)

任何帮助将不胜感激

1 个答案:

答案 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");