Regex 如何使用正则表达式从querystring数据中删除项?

Regex 如何使用正则表达式从querystring数据中删除项?,regex,asp-classic,query-string,Regex,Asp Classic,Query String,我想使用正则表达式函数根据键从querystring中删除项 假设我有一个这样的疑问: page.asp?item1=data1&item2=data2&item3=data3 newQs = removeQsItem(url, "item2") 我想调用如下函数: page.asp?item1=data1&item2=data2&item3=data3 newQs = removeQsItem(url, "item2") …并让该函数返回以下内容: pa

我想使用正则表达式函数根据键从querystring中删除项

假设我有一个这样的疑问:

page.asp?item1=data1&item2=data2&item3=data3
newQs = removeQsItem(url, "item2")
我想调用如下函数:

page.asp?item1=data1&item2=data2&item3=data3
newQs = removeQsItem(url, "item2")
…并让该函数返回以下内容:

page.asp?item1=data1&item3=data3
。。。但是,如果使用第1项或第3项调用,我也需要它工作——不管它们在查询字符串中的位置如何

到目前为止,我的策略是尝试抓取“requireItem={这里除了符号以外的任何东西}”。但我真的很难理解正则表达式的语法,我的大脑快要融化了


任何帮助都将不胜感激

是否必须使用正则表达式?你能做一些字符串函数吗?比如获取给定字符串“item2”的strpo,然后找到下一个符号的strpo,然后对这些位置进行子串,得到“item2=data2&”(你可能需要在第二个位置的索引中添加1才能真正获得符号?)只需做一个myQueryString.Replace(substringToRemove,”)用零替换子字符串?

我不是正则表达式专家,但我一直在努力学习。所以我做了一些研究(尝试和错误),并提出了这个。其他人可能会把这个弄干净

(\bitem2=[A-Za-z0-9]*&|&\bitem2=[A-Za-z0-9]*$|^\bitem2=[A-Za-z0-9]*$)
我会解释一下。首先,一个搜索中有3个搜索

  • 第一个查找您的项目,如果它后面跟一个符号&(因此我们可以 删除尾随(&)
  • 第二个查找您的项目,如果它是最后一个项目(因此我们可以 删除前面的&)
  • 最后一个是如果您的项目是唯一的项目
守则:

  • (this | that)表示或。匹配这个或那个
  • \b匹配单词边界。所以我们知道我们在匹配一个词, 而不仅仅是其中的一部分
  • [A-Za-z0-9]*匹配零个或多个字母或数字。如果有空值,则为零
  • $匹配行尾
  • ^匹配行的开头

您有没有办法使用RegEx来实现此目的?(或者使用asp classic解决这个问题?)。你有没有看到我只是看起来像是一个有用的正则表达式函数,我想在我的军械库中使用它。是的,我可以这样做,但后来我开始尝试使用正则表达式,现在我决定了解如何使用:)谢谢汤姆,这很好。你知道,如果它是唯一的一个,它似乎不会拾取项目,除非我添加一个符号到它。我不理解这一点,因为(^\bitem2=[A-Za-z0-9]*$)肯定应该匹配item2=[zeroOrMoreAlphanumericCharacters]?也就是说,在这个表达式的末尾没有提到符号,而且,在查询字符串中可能会出现一些时髦的字符,而不仅仅是字母数字。所以我还想找到一种匹配“除&”以外的任何字符的方法。我把它作为一个单独的问题贴在这里:最终我用[^&]*匹配除了一个符号和之外的任何东西。我不知道为什么它没有选择一个参数。它在我使用的regex测试站点上工作。但很高兴你能成功。