如何用正则匹配排除PRIMARY KEY的KEY行并移除(SublimeText3)
解决方法
用Sublime Text 3的查找替换功能分两步搞定,先打开替换面板(快捷键Ctrl+H),记得勾选正则表达式模式(面板左侧的.*按钮)。
第一步:删掉所有普通KEY索引行
- 查找框输入:
^\s*KEY.*,\s*$ - 替换框留空
- 原理:这个正则匹配所有以任意空白开头、
KEY打头的完整行,包含行末的逗号和换行前的空白,自动跳过PRIMARY KEY行(因为它开头是PRIMARY KEY,不会被这个规则命中)。点「替换全部」就能把所有普通索引行清掉。
第二步:去掉PRIMARY KEY行末尾的逗号
- 查找框输入:
(PRIMARY KEY \(.*\)),\s*$ - 替换框输入:
$1 - 原理:正则会捕获
PRIMARY KEY (...)的整个内容,然后把后面的逗号和行尾空白去掉,只保留捕获到的核心内容。执行替换后,PRIMARY KEY (id),就会变成PRIMARY KEY (id)。
处理后的最终SQL
CREATE TABLE `test_table` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `ref_id` bigint(20) unsigned NOT NULL COMMENT 'ref ID', `code` varchar(4) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'code', `name` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'name', `reg_ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'reg_ts', `upd_ts` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'upd_ts', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='test table'
内容的提问来源于stack exchange,提问作者JoonT
相关产品推荐
相关产品推荐

