使用正则表达式从CREATE SQL命令中提取列名

时间:2019-06-14 14:24:19

标签: c# regex

我有这样的sql命令:

CREATE TABLE Tablex(
  column1 INT,
  column2 TEXT,
  column3 INT,
  column4 INT,
)

此CREATE命令只是一个示例,可以自由选择列的名称。如何在C#中通过Regx提取列名称?

2 个答案:

答案 0 :(得分:2)

我的猜测是我们希望捕获column1和其他类似的列,此表达式可能会这样做:

\s*(.+?)\s+[A-Z]+,

,如果它总是总是从右到[A-Z]+,的边界。

Demo 1

其他选择是在,之后和我们想要的列之前添加一个空格:

\s+(.+?)\s+[A-Z]+,?\s

Demo 2

测试

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"\s*(.+?)\s+[A-Z]+,";
        string input = @"CREATE TABLE Tablex(
  column1 INT,
  column2 TEXT,
  column3 INT,
  column4 INT,
)
";
        RegexOptions options = RegexOptions.Multiline;

        foreach (Match m in Regex.Matches(input, pattern, options))
        {
            Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
        }
    }
}

答案 1 :(得分:0)

这是另一种选择。我不喜欢难以维护的复杂正则表达式:

onclick
相关问题