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

时间:2012-10-23 15:48:40

标签: c# .net regex string

我有以下带有SQL命令的字符串:

string sql = "select [x] from table where field = [y] order by [w], [z]";

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

我尝试使用while语句执行某些操作,但它不起作用。

谢谢

2 个答案:

答案 0 :(得分:5)

使用正则表达式:

@"\[(.)]"

使用[]的{​​{1}}方法时,这会捕获Matches内的字母。

由于括号内可能有words,因此正则表达式稍微复杂一些。

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

]

用法:

@"\[([^\]]+)]"

请注意,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); } } 中有一个默认组,因此您将获得重复项。

答案 1 :(得分:1)

string sql = "select [x] from table where field = [jkjlh] order by [w], [z]";
var matches = Regex.Matches(sql,@"\[(.*?)\]");
var result = Enumerable.Cast<Match>(matches).Select(m => m.Groups[1].Value).ToList();

结果将包含带键的字符串列表。