Buy Me a Coffee

在大型軟體專案,常常需要調查那些程式有用到哪個Table時總是很煩人。

在C# 使用正規表示式(Regular expression)

正規表示式(英語:Regular expression,常簡寫為regex、regexp或RE),又稱規律表達式、正規表達式、正規表示法、規則運算式、常規表示法,是電腦科學概念,用簡單字串來描述、符合文中全部符合指定格式的字串,現在很多文字編輯器都支援用正規表達式搜尋、取代符合指定格式的字串。許多程式設計語言都支援用正規表達式操作字串,如Perl就內建功能強大的正規表達式引擎。正規表達式這概念最初由Unix的工具軟體(例如sed和grep)普及開。來源:https://zh.wikipedia.org/zh-tw/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

在面對有成千隻的程式,要找到某個SQL是相當的煩人的。搭配C#正規表示式,快速將SQL語法取出。正規表示式,在爬網路資料時一樣受用。

// 使用正規表示式 取得 SQL 資料
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        string input = "SELECT * FROM Customers; INSERT INTO Orders (CustomerID, OrderDate) VALUES ('ALFKI', '2022-03-06');";

        Regex regex = new Regex(@"(SELECT[\s\S]*?;|INSERT[\s\S]*?;|UPDATE[\s\S]*?;|DELETE[\s\S]*?;)");

        MatchCollection matches = regex.Matches(input);

        foreach (Match match in matches)
        {
            if (match.Success)
            {
                Console.WriteLine("SQL statement: " + match.Value.Trim());
            }
        }
    }
}

搭配先將C/C++註解移除效果更好

// 移除 C/C++ 的註解
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        string input = "/* This is a C-style comment. */ // This is a C# comment.";

        Regex regex = new Regex(@"/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|//.*");

        MatchCollection matches = regex.Matches(input);

        foreach (Match match in matches)
        {
            if (match.Success)
            {
                Console.WriteLine("Comment: " + match.Value.Trim());
            }
        }
    }
}