0

次のような文字列があります。

personname=aanch&personaddress=Jammu & Kashmir&personmobile=9876543210

私の望ましい出力は次のとおりです。

personname=aanch
personaddress=Jammu & Kashmir
personmobile=9876543210

正規表現を使用して文字列を分割し、&上記の結果を取得することは可能ですか?

4

3 に答える 3

2

質問を再編集すると、実際に機能する可能性のある解決策が表示されます。

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);
于 2012-05-02T12:51:37.310 に答える
0

編集 - 質問の変更

 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
}
于 2012-05-02T10:37:24.350 に答える
-1

しかし、なぜ文字列を分割するために正規表現が必要なのですか。通常のC#文字列分割関数を使用して、目的の結果を得ることができます

string text = "ABC&DEF&GHI&JK&L&MNO&P&Q"
var splitString = text.split(text,"&");

分割された文字列は、配列としてに格納されますsplitString

于 2012-05-02T10:46:35.087 に答える