在c#中通过正则表达式拆分字符串

时间:2014-07-11 13:57:03

标签: c# regex

我有一个像这样的字符串

[website name] VARCHAR(50), [affiliate name] VARCHAR(128), [dynamite data lid]  VARCHAR(50),

我想使用C#中的正则表达式将其拆分为

website name
VARCHAR(50)
affiliate name
VARCHAR(128)
dynamite data lid
VARCHAR(50)

我不想在我的解决方案开始时增加额外的行

2 个答案:

答案 0 :(得分:1)

匹配全部而非分割

使用此正则表达式:

(?<=\[)[^\]]+(?=\])|\S+(?=,)

在C#中:

StringCollection resultList = new StringCollection();
try {
    Regex myRegex = new Regex(@"(?<=\[)[^\]]+(?=\])|\S+(?=,|$)");
    Match matchResult = myRegex.Match(yourString);
    while (matchResult.Success) {
        resultList.Add(matchResult.Value);
        matchResult = matchResult.NextMatch();
    } 
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

答案 1 :(得分:0)

尝试\[([\w\s]+)\]\s+(\w+\(\d+\))这将匹配并将组件捕获到您可以使用的组中。