EDIT - With the change of question
var regex = new Regex(@"&(?<=[^&=]+=)")
Which the break down is
& - match &
(?<=[^&=]+=) - Match but don't include atleast one character that isn't & or = followed by =
Alternatively if you actually after the names and values you can do the following
var regex=new Regex(@"(?>^|&)(?<name>.*?)=(?<value>.*?)(?=$|&[^&]+?=)");
var text="personname=aanch&personaddress=Jammu & Kashmir&personmobile=9876543210";
foreach (Match match in regex.Matches(text)) {
var name=match.Groups["name"].Value;
var value=match.Groups["value"].Value;
// Do something with values
}
&should be split on (and when not)?&cannot appear unescaped in there, as far as I know. Are you doing percent-decoding first and now try damage control?