#c# #asp.net #regex #iis
#c# #asp.net #регулярное выражение #iis
Вопрос:
Мне нужна некоторая помощь с регулярным выражением, поскольку я пишу новое правило в helicon.
пример URL будет содержать имя файла и параметр строки запроса, который я хочу сопоставить для обоих
www.testwebsite.com/hello.aspx?filename=/test.aspamp;employeeid=2100amp;age=20
в приведенном выше URL-адресе я хочу проверить, является ли он hello.aspx и содержит ли он строку запроса filename=/test.asp
имя файла может быть в любом месте строки запроса.
я хочу перенести приведенный выше URL на какую-нибудь другую страницу
mynewpage.aspx $2$3 etc///
я написал следующий URL, но он не работает, он соответствует шаблону для всех, например sample1.aspx или любому имени файла
(.*)(/hello.aspx? )(.*)(filename=/test.asp)(.*)
любая помощь будет оценена
Ответ №1:
Что вам нужно, так это группы, не захватывающие:
(?:.*)(/hello.aspx? )(?:.*)(filename=/test.asp)(?:.*)
["www.testwebsite.com/hello.aspx?filename=/test.aspamp;employeeid=2100amp;age=20", "/hello.aspx?", "filename=/test.asp"]
(?:.*)(/hello.aspx? )(?:.*)(filename=/test.asp)(.*)
["www.testwebsite.com/hello.aspx?filename=/test.aspamp;employeeid=2100amp;age=20", "/hello.aspx?", "filename=/test.asp", "amp;employeeid=2100amp;age=20"]
Если вы хотите получить все параметры отдельно от строки запроса, вы можете сделать это следующим образом:
string queryString = (new Uri("...")).Query;
NameValueCollection parameters = HttpUtility.ParseQueryString(queryString);
parameters.Get("filename");
parameters.Get("employeeid");
parameters.Get("age");
Комментарии:
1. @dan я не получаю всю строку запроса values.in $3
2. @мне также нужны идентификатор сотрудника и возраст.
3. о, извините, я забыл об этом
4. всегда ли имя файла, идентификатор сотрудника и возраст отображаются в таком порядке?
5. не могли бы вы указать, что именно вы ожидаете получить в группе $ 3?