нужна помощь с правилом регулярных выражений - PullRequest
0 голосов
/ 14 мая 2011

Мне нужна помощь с регулярным выражением, так как я пишу новое правило в геликоне.

образец URL будет иметь имя файла и параметр строки запроса, который я хочу сопоставить на обоих

www.testwebsite.com/hello.aspx?filename=/test.asp&employeeid=2100&age=20 

в приведенном выше URL, я хочу проверить, если это hello.aspx и имеет строку запроса filename=/test.asp

имя файла может быть где угодно в строке запроса.

Я хочу разбить вышеуказанный URL на другую страницу

mynewpage.aspx $2$3 etc///

Я написал следующий URL, но он не работает, он соответствует шаблону для всех, как sample1.aspx или любое имя файла

(.*)(\/hello.aspx\?+)(.*)(filename=\/test\.asp)(.*)

любая помощь будет оценена

1 Ответ

1 голос
/ 14 мая 2011

Что вам нужно, это группы без захвата :

(?:.*)(\/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"]

Если вы хотите получить все параметры отдельно от строки запроса , вы можете сделать это следующим образом:

string queryString = (new Uri("...")).Query;
NameValueCollection parameters = HttpUtility.ParseQueryString(queryString);
parameters.Get("filename");
parameters.Get("employeeid");
parameters.Get("age");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...