在字符串中检索括号内的键

Fel*_*ani 1 .net c# regex string

我有以下字符串与SQL命令:

string sql = "select [x] from table where field = [y] order by [w], [z]";
Run Code Online (Sandbox Code Playgroud)

我想获取[brackets](x,y,w,z等)中的键,我怎么能用C#做到这一点?有没有办法用正则表达式(没必要)?

我尝试用while声明做一些事情,但它不起作用.

谢谢

Ode*_*ded 5

使用正则表达式:

@"\[(.)]"
Run Code Online (Sandbox Code Playgroud)

这将捕获[]使用Matches方法时的内部字母Regex.

由于括号内可能有单词,因此正则表达式更复杂一些.

我将假设这些将永远不会包含转义]- 所以以下内容应该有效:

@"\[([^\]]+)]"
Run Code Online (Sandbox Code Playgroud)

用法:

var matches = Regex.Matches("select [x] from table where field = [yy] order by [w], [z]", @"\[([^\]]+)]");

foreach(Match match in matches)
{
  foreach(Group group in match.Groups)
  {
     Console.WriteLine(group.Value);
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,有一个默认组match.Groups,因此您将获得重复项.