从框括号内的字符串中提取子字符串

时间:2013-09-05 05:05:30

标签: c# regex parsing

我有以下字符串

 string _sql = "SELECT   [Date] ,[Product Name] ,Sum([Revenue]) as [Revenue]  FROM [tblC6FD_Data_16_BisLanguage17112011] Group By  [Date] ,[Product Name] ";

我想提取框括号内的所有子字符串

我想要这样的输出

[日期]

[产品名称]

[收入]

[日期]

[产品名称]

我尝试了一些类似的事情,但完全丢失了

  var str = _sql.Split(new[] { ',' },StringSplitOptions.RemoveEmptyEntries).Select(col => new { 
        col,token = col.TrimStart().Split().First()}).Where(x => x.token.Contains('[')).Select(x => x.token);

1 个答案:

答案 0 :(得分:8)

这是您正在寻找的解决方案的草稿,使用正则表达式:

Regex regex = new Regex(@"\[[\w ]+\]");    
string[] inBrackets = regex.Matches(_sql)
                           .Cast<Match>()
                           .Select(m=>m.Value)
                           .ToArray();

但是,请记住,这将在括号中找到所有短语,包括表名。这也意味着收入将增加两倍。但这应该让你开始。