从SQL“ CREATE TABLE”语句中提取某些列的正则表达式

时间:2018-11-26 15:44:15

标签: regex visual-studio-code

假设我有一个MySQL转储,它创建了很多表。

示例:

CREATE TABLE `my_table` (
  `id` bigint(20) NOT NULL,
  `REVTYPE` tinyint(4) DEFAULT NULL
  `some_other_column` varchar(255)
);

查找以下内容的有效正则表达式是什么:

  • 所有以“ CREATE TABLE”开头并且在表名中包含“ my_”的行
  • 然后提取包含“ tinyint”的行

所以结果看起来像:

CREATE TABLE `my_table` (
  `REVTYPE` tinyint(4) DEFAULT NULL

1 个答案:

答案 0 :(得分:1)

此正则表达式似乎有效:

^((CREATE.*my_.*\n)|(\s+.*tinyint.*\n)|(\s+.*(?!tinyint)\n))


CREATE TABLE `my_table` (
  `id` bigint(20) NOT NULL,
  `id` bigint(22) NOT NULL,
  `REVTYPE` tinyint(4) DEFAULT NULL,
  `id` bigint(20) NOT NULL,
  `REVTYPE` tinyint(5) DEFAULT NULL,
  `some_other_column` varchar(255)
);

成为(用$2$3代替):

CREATE TABLE `my_table` (
  `REVTYPE` tinyint(4) DEFAULT NULL,
  `REVTYPE` tinyint(5) DEFAULT NULL,
);

[我假设OP希望最后使用);-如果不正确,则建议。] 。 参见regex101 link