簡體   English   中英

正則表達式解析SQL字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM