字符串函数(regex?)从url字符串中删除查询字符串对
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串函数(regex?)从url字符串中删除查询字符串对相关的知识,希望对你有一定的参考价值。
给出以下示例“字符串”:
- SomePage.aspx页面?ID = 20&name =布莱恩和令牌= 1234
- SomePage.aspx页面?ID = 20&标记= 1234&名称=布赖恩
- SomePage.aspx页面?令牌= 1234&ID = 20&name =布赖恩
我想在所有情况下删除令牌的名称/值对,所以我留下:
- SomePage.aspx页面?ID = 20&name =布赖恩
- SomePage.aspx页面?ID = 20&name =布赖恩
- SomePage.aspx页面?ID = 20&name =布赖恩
注意:由于各种原因,我无法使用Uri类。
是否有单个正则表达式或字符串函数可以执行此操作?
答案
(token=[^&]*&|[?&]token=[^&]*$)
此正则表达式删除所有变体中的token
参数,包括令牌是唯一参数的变体:
- SomePage.aspx页面?令牌= 1234
说明:
第1部分:token=[^&]*&
...捕捉token
包括它的价值和终止&
。
这部分处理以下情况:
- SomePage.aspx页面?ID = 20&标记= 1234&名称=布赖恩
- SomePage.aspx页面?令牌= 1234&ID = 20&name =布赖恩
第2部分:[?&]token=[^&]*$
......当token
作为最后一个参数和/或唯一参数,以及它的领先?
或&
时,它会捕获它。
这部分处理以下情况:
- SomePage.aspx页面?ID = 20&name =布莱恩和令牌= 1234
- SomePage.aspx页面?令牌= 1234
另一答案
我想这会为你做(没有机会测试)。
string s = "somePage.aspx?id=20&name=brian&token=1234";
s = Regex.Replace(s, @"(&token=[^&s]+|token=[^&s]+&?)", "");
编辑:已更新以正确处理令牌是第一对的情况。
另一答案
考虑使用HttpUtility.ParseQueryString(http://msdn.microsoft.com/en-us/library/ms150046.aspx)来解析和UriBuilder构造回...
小心查询字符串中的所有编码和参数排序--Uri类会帮助它。
以上是关于字符串函数(regex?)从url字符串中删除查询字符串对的主要内容,如果未能解决你的问题,请参考以下文章
SQL/Regex Challenge/Puzzle:如何从 SQL 代码中删除注释(通过使用 SQL 查询)?