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

M A*_*ela 2 c# regex parsing

我有以下字符串

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

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

我想要像这样的输出

[日期]

[产品名称]

[收入]

[日期]

[产品名称]

我尝试了一些类似的东西,但完全迷失了

  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);
Run Code Online (Sandbox Code Playgroud)

Adr*_*iro 8

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

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

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