使用正则表达式拆分字符串

时间:2012-05-02 10:21:17

标签: .net regex

我有一个字符串:

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

我想要的输出是:

personname=aanch
personaddress=Jammu & Kashmir
personmobile=9876543210

是否可以使用正则表达式在&上拆分字符串并获得上述结果?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

编辑 - 随着问题的改变

 var regex = new Regex(@"&(?<=[^&=]+=)")

分解的是

&安培; - 匹配&amp;

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

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

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
}

答案 2 :(得分:-1)

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

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

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