跳转到主内容
极星编程网:以代码为星,赴技术山海!

Sublime如何实现正则表达式提取 Sublime筛选特定字符技巧【实操】

Sublime Text 不支持一键导出匹配内容为纯列表,所有提取依赖 Find All 或 Find in Files 结果整理;需用正则捕获组(如 $1)配合非贪婪量词、边界锚定,并注意 Replace in Files 不支持 $1 引用,仅当前文件 Replace 面板可用;提取后需手动去重、分行、转数组,且须控制作用域与编码。 Sublime Text 本身不提供“一键导出匹配内容为纯列表”的功能,所有提取操作都依赖 Find All 或 Find in Files 的结果整理。别指望它自动去重、转数组或生成 CSV——那是后续步骤,得自己处理。 怎么让 Find All 选中的是纯关键词,而不是整行? 关键在正则里用
()
捕获目标部分,并确保匹配范围最小化。如果写成
var\s+(\w+)\s*=
却没限制上下文,Sublime 会从
var
开始一直吃到行尾,
$1
就拿不到干净的变量名。 用非贪婪量词:
console\.log\(\s*["']([^"']*)["']
比
console\.log\(\s*["'](.*)["']
更安全,避免跨引号吞掉后面内容 排除干扰边界:提取函数名时用
function\s+(\w+)\s*\(\)
,不是
function\s+(\w+)
,否则可能捕获到
functionName
中的
Name
测试先行:先在单个文件按
Ctrl+F
输入正则,看高亮是否只框住你要的部分;不行就调窄范围,比如加
\b
或锚定空格 为什么 $1 在 Replace in Files 里不生效? 因为
Replace in Files
(
Ctrl+Shift+H
)面板不支持捕获组引用——它只把
当字面字符串输出。这是 Sublime 的硬限制,不是你正则写错了。 仿Sublime和notepad++编辑器效果 仿Sublime和notepad++编辑器效果 下载 真正能用
$1
的地方只有当前文件的
Replace
面板(
Ctrl+H
),且必须点开右下角的
.*
图标 想批量提取关键词?别走 Replace in Files,改用
Find in Files
(
Ctrl+Shift+F
)→ 点
Find
→ 复制结果页文本 → 粘贴后用列编辑或二次替换清理 想保留关键词并重构?先在单个文件确认
Find
和
Replace
(填
$1
)逻辑正确,再切到
Replace in Files
执行无引用的批量替换 提取后怎么快速去重、分行、转数组? 复制出来的结果通常是带路径和行号的杂乱文本,比如
main.js:42: id: "user_id"
。直接粘贴进新文件后,得靠组合操作收尾。 去重:粘贴后全选 →
Ctrl+Shift+P
→ 输入
Sort Lines
→ 回车 → 再执行一次
Remove Duplicate Lines
(需提前安装 Package Control 的相应插件,原生不支持) 分行:若替换时用了
$1\n
,但末尾多空行,可用
^$\n
(开启正则)替换为空来清理 转数组:手动补
["
开头、
"]
结尾,再对换行符做
\n
→
", "
替换;注意首尾引号和逗号位置,别漏掉第一个或最后一个 最易被忽略的是作用域控制:默认正则对整个文件生效,但如果你只选中了一段 JSON,又忘了勾选
In Selection
提示,那替换就会跑出范围。还有编码问题——粘贴进来的文本带 BOM 或零宽空格,正则直接失效,得先
File → Reopen with Encoding → UTF-8
强制重载。

相关文章