直接用#([0-9a-fa-f]{3,6})匹配即可精准提取十六进制颜色值,$0替换保留原值;无需整行匹配,避免冗余文本;sublime中$0表示完整匹配项,非\0;跨文件提取需确保“regex in files”开启且路径过滤准确。

直接用 #[0-9a-fA-F]{3,6} 查找,配合 $0 替换即可提取所有十六进制颜色值,无需额外处理或写脚本。
为什么不用 ^.*#[0-9a-fA-F]{3,6}.*$ 匹配整行
想“提取颜色值”不等于“提取含颜色的整行”。用 ^.*#[0-9a-fA-F]{3,6}.*$ 会把整行内容都选中,后续还得手动删前后文;而正则本身就能精准锚定颜色字符串,直接匹配最短有效单元更可靠。
-
#[0-9a-fA-F]{3,6}已能覆盖#fff、#f00、#ff0000、#1a2b3c等全部合法格式 - Sublime 的
Find All默认只高亮匹配到的子串(不是整行),天然适合提取 - 如果误用了
^.*....*$,复制出来全是带冗余文本的“脏数据”,后期清洗成本反而更高
替换时用 $0 而不是 \0 或空字符串
Sublime 的替换语法中,<p>Sublime 的替换语法中,<code>$0 表示整个匹配项(即找到的完整颜色值),这是最安全、最直观的提取方式。很多人下意识写 \0,但 Sublime 不支持反斜杠数字引用捕获组以外的内容;写空字符串则什么也得不到。
<p>Sublime 的替换语法中,<code>$0 表示整个匹配项(即找到的完整颜色值),这是最安全、最直观的提取方式。很多人下意识写 \0,但 Sublime 不支持反斜杠数字引用捕获组以外的内容;写空字符串则什么也得不到。,但 Sublime 不支持反斜杠数字引用捕获组以外的内容;写空字符串则什么也得不到。
- 查找框输入:
#[0-9a-fA-F]{3,6} - 替换框输入:
$0 - 点击
Replace All后,所有匹配的颜色值会被原地保留,其他内容被清空——等效于“只留下颜色” - 若要换行分隔,可替换为:
$0\n(注意结尾加换行符)
跨文件批量提取必须用 Ctrl+Shift+F 并关闭“Regex in Files”陷阱
在“Find in Files”面板里,默认勾选的 Regular Expression 是针对文件内容搜索的,但很多人忽略了右上角的 Where 输入框旁那个小齿轮图标:它控制是否启用“Regex in Files”模式——这个开关关掉时,Where 中的路径通配符(如 *.css)会失效,导致搜不到任何文件。
- 务必确认
Where框右侧齿轮图标是“开启”状态(图标变蓝/高亮) -
File mask填*.css,*.scss,*.html,*.js,避免扫无关文件拖慢速度 - 查找内容仍为:
#[0-9a-fA-F]{3,6} - 替换为:
$0,然后点Replace All in Files——结果会以“文件名: 行号: 内容”格式输出在底部面板,复制后需再用一次正则清理前缀
真正容易被忽略的是:Sublime 对大小写敏感默认开启,#FFF 和 #fff 是两个不同匹配;如果你的项目混用大小写,别依赖界面右下角的 Aa 按钮——它在“Find in Files”中不可靠,老老实实用 [0-9a-fA-F] 显式声明更稳。











