[英]Regex parse sql string
我有像SQL字符串
select * from dbo.Person where Person = ? AND Name = ? OR (Country = ? OR City = 1)
如果可以在C#中使用Regex獲取如下所示的字符串數組
result[0] = Person = ?
result[1] = Name = ?
result[2] = (Country = ? OR City = 1)
謝謝。
如果您需要比這更復雜的東西,它將很快超出使用正則表達式可以輕松解決的范圍。 我已經在GitHub上發布了一個免費的解析器,它將以穩定的方式將TSQL解析為TSQL Parser 。 您還可以使用TSqlParser使用Microsoft TSQL解析器。 無論使用哪種方法,他們都會將其分解為比您要求的粒度更細的粒度,然后您必須基於括號將其拼湊起來。
第一次嘗試看起來像這樣
var s = @"select* from dbo.Person where Person = ? AND Name = ? OR (Country = ? OR City = 1)";
var reg = new Regex("[A-Za-z]+ = [A-Za-z0-9?]+");
var result = reg.Matches(s);
那樣的東西,但不是正則表達式
var s = @"select* from dbo.Person where Person = ? AND Name = ? OR(Country = ? OR City = 1)";
var s1 = s.Split(new[] { "where" }, StringSplitOptions.None)[1];
var s2 = s1.Split(new[] { "OR", "AND" }, StringSplitOptions.None);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.