Regex 如何用正则表达式替换可选出现的前缀

Regex 如何用正则表达式替换可选出现的前缀,regex,Regex,我有一个如下所示的查询字符串: ?blah=1&phoneNum=123-456-7890 或 我正在使用这个正则表达式:phoneNum=[^&]+&?从查询字符串中删除子字符串phoneNum=\uuu,但在第一种情况下,它会留下一个尾随&而不是me gusta 我如何调整我的正则表达式模式以选择性地删除前面的&?因此,它删除了以下两项: phoneNum=123-456-7890 及 从查询字符串?中,就像使用?使最后一个可选一样,您可以使第一个也可选: &am

我有一个如下所示的查询字符串:

    ?blah=1&phoneNum=123-456-7890

我正在使用这个正则表达式:phoneNum=[^&]+&?从查询字符串中删除子字符串phoneNum=\uuu,但在第一种情况下,它会留下一个尾随&而不是me gusta

我如何调整我的正则表达式模式以选择性地删除前面的&?因此,它删除了以下两项:

    phoneNum=123-456-7890


从查询字符串?

中,就像使用
使最后一个
可选一样,您可以使第一个也可选:

&?phoneNum=[^&]+&?

为了严格地回答您的问题,您需要在前面加上一个&?但我认为这是一种脆弱的方法,因为phoneNum参数可能位于查询字符串中的任何位置:first、last或interween。如果您开始传递更多参数,并且删除了这两个&符号,那么最终可能会出现一个混乱的请求


我将解析查询,放弃phoneNumber参数,然后再次构造查询。

您能否准确地告诉我们您希望对给定输入得到什么结果?请尝试使用
&?phoneNum=[^&]+&?
。。。虽然我不知道为什么要拆分自己的查询字符串而不是使用查询字符串解析器。您正在编写自己的解析器吗?你在用什么编程语言?
    &phoneNum=123-456-7890
&?phoneNum=[^&]+&?