次のような文字列があります。
personname=aanch&personaddress=Jammu & Kashmir&personmobile=9876543210
私の望ましい出力は次のとおりです。
personname=aanch
personaddress=Jammu & Kashmir
personmobile=9876543210
正規表現を使用して文字列を分割し、&
上記の結果を取得することは可能ですか?
質問を再編集すると、実際に機能する可能性のある解決策が表示されます。
splitArray = Regex.Split(subjectString,
@"& # Split on a &
(?= # but only if it's followed by...
\w+ # a series of alphanumeric characters
= # and an equals sign
) # End of lookahead assertion",
RegexOptions.IgnorePatternWhitespace);
編集 - 質問の変更
var regex = new Regex(@"&(?<=[^&=]+=)")
内訳はどれですか
& - マッチ &
(?<=[^&=]+=) - 一致しますが、& または = の後に = が続く文字を少なくとも 1 文字は含みません
または、実際に名前と値の後にある場合は、次のことができます
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
}
しかし、なぜ文字列を分割するために正規表現が必要なのですか。通常のC#文字列分割関数を使用して、目的の結果を得ることができます
string text = "ABC&DEF&GHI&JK&L&MNO&P&Q"
var splitString = text.split(text,"&");
分割された文字列は、配列としてに格納されますsplitString