字符串函数(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=[^&]*$)

https://regexr.com/3ia6k

此正则表达式删除所有变体中的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 查询)?

从 URL 中删除查询字符串

从 URL 中删除查询字符串

从 URL 中提取部分字符串 - Java Regex

通过 php 和 regex 从文本字符串中查找 url? [复制]

如何使用 Regex.Replace 从字符串中删除数字?