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(@"&(?<=[^&=]+=)")

哪个故障是

& - 匹配 &

(?<=[^&=]+=) - 匹配但不包括至少一个不是 & 或 = 后跟 = 的字符

或者,如果您实际上在名称和值之后,您可以执行以下操作

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

但是为什么需要 reg-ex 来拆分字符串。您可以使用普通的 C# 字符串拆分功能来获得所需的结果

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

拆分后的字符串将作为数组存储在splitString

于 2012-05-02T10:46:35.087 回答