我有以下带有SQL命令的字符串:
string sql = "select [x] from table where field = [y] order by [w], [z]";
我想在[brackets]
(x,y,w,z等等)中获取密钥,我怎么能用C#做到这一点?有没有办法用正则表达式(没必要)呢?
我尝试使用while
语句执行某些操作,但它不起作用。
谢谢
答案 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();
结果将包含带键的字符串列表。