如何在“?”之后用“?”替换url中的特定字符?

时间:2013-12-10 07:49:35

标签: c# .net regex

我想从&之后的url替换?,即查询字符串。

Example
http://stackoverflow.com&/questions/ask?a=abcd&b=bcd&-------->1

假设有一个Url为1 现在我想用{“

替换amp;
http://stackoverflow.com&/questions/ask?a=abcd&b=bcd&-------->2

我试过这个正则表达式

\?(.*?&(amp;).*?){1,} for using Regex.Replace(......);

我想用“”替换组[2]。 怎么做???????????

2 个答案:

答案 0 :(得分:0)

您可以使用:

string pattern = @"((?:\?|\G(?<!^))(?:[^&]+|&(?!amp;))*&)amp;";
string replacement = "$1";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);

模式细节:

(                         # capturing group: content after ? and before &amp; 
    (?:                   # non capturing group: entry point
        \?                # literal ?
      |                   # OR
        \G(?<!^)          # a match contiguous to a precedent match
    )
    (?:[^&]+|&(?!amp;))*  # all that is not a & or a & not followed by "amp;"
&                         # literal & before "amp;"
)
amp;

答案 1 :(得分:0)

你可能不想替换放大器;没什么,但&amp; amp; amp; amp; amp; amp;通过&amp;。

我认为正则表达式在这里使用不正确。有关如何从URL中提取参数的信息,请参阅Get url parameters from a string in .NET。这将自动转换&amp; amp;到&amp;