You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取CREATE INDEX至右括号间的索引DDL并导出或保留目标内容

提取CREATE INDEX到列定义右括号的DDL片段

修正正则表达式

你之前用的CREATE INDEX[^;]+;匹配的是到分号的内容,不符合需求。正确的正则需要匹配从CREATE INDEX开头,直到**列定义的闭合右括号)**的所有内容(包括换行),要开启多行匹配支持:

CREATE INDEX[\s\S]*?\)
  • [\s\S]:匹配任意字符(包括换行,替代.在多行场景下的限制)
  • *?:非贪婪匹配,确保找到第一个闭合的)就停止,避免误匹配后续无关括号

实现方式

1. 用VS Code快速处理

  1. 打开你的DDL文本文件
  2. 按Ctrl+F打开查找框,点击右上角的「正则表达式」按钮(.*图标)
  3. 输入上面的正则,点击「查找全部」,所有目标片段会被选中
  4. 按Ctrl+C复制,新建文件粘贴保存即可

2. 用Python脚本批量处理

适合数千行的大文件:

import re

# 读取原文件
with open("your_ddl_file.sql", "r", encoding="utf-8") as f:
    content = f.read()

# 匹配目标片段
pattern = re.compile(r'CREATE INDEX[\s\S]*?\)')
matches = pattern.findall(content)

# 写入新文件
with open("extracted_indexes.sql", "w", encoding="utf-8") as f:
    f.write("\n\n".join(matches))

替换your_ddl_file.sql为你的实际文件名,运行后会生成提取好的extracted_indexes.sql。

3. 用sed命令行处理(Linux/macOS)

终端执行以下命令直接生成结果文件:

sed -n '/CREATE INDEX/,/)/p' your_ddl_file.sql | sed '/^[^C]/d' > extracted_indexes.sql
  • 第一个sed:提取从CREATE INDEX到第一个)的行
  • 第二个sed:过滤掉)后无关的行

内容的提问来源于stack exchange,提问作者Sahan Aloka Mendis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:22:56