我有一个文本文件,我想用空格替换所有 GUID。
我想要:
92094, "970d6c9e-c199-40e3-80ea-14daf1141904"
91995, "970d6c9e-c199-40e3-80ea-14daf1141904"
87445, "f17e66ef-b1df-4270-8285-b3c15da366f7"
87298, "f17e66ef-b1df-4270-8285-b3c15da366f7"
96713, "3c28e493-015b-4b48-957f-fe3e7acc8412"
96759, "3c28e493-015b-4b48-957f-fe3e7acc8412"
94665, "87ac12a3-62ed-4e1d-a1a6-51ae05e01b1a"
94405, "87ac12a3-62ed-4e1d-a1a6-51ae05e01b1a"
成为:
92094,
91995,
87445,
87298,
96713,
96759,
94665,
94405,
如何在Sublime 3中实现这一点?
- Ctrl+H
- 查找:
"[da-f-]{36}"
- 替换:
LEAVE EMPTY
- 启用正则表达式模式
- 全部替换
解释:
" : double quote
[ : start class character
d : any digit
a-f : or letter from a to f
- : or a dash
]{36} : end class, 36 characters must be present
" : double quote
给定示例的结果:
92094,
91995,
87445,
87298,
96713,
96759,
94665,
94405,
尝试在正则表达式搜索模式下搜索此模式:
"[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}"
然后只需替换为空字符串。 这应该会剥离 GUID,留下所需的输出。
演示
另一个正则表达式解决方案涉及略有不同的搜索替换策略,我们不关心 GUI 格式,只需获取第一列:
- 搜索
([^,]*,).*
(同样不要忘记激活正则表达式模式.*(。 - 替换为
$1
。
有关正则表达式的详细信息
这里的想法是捕获所有第一列。此处的列由一系列
- "一些非逗号字符":
[^,]*
- 后跟逗号:
[^,]*,
然后,第一列后面可以跟任何.*
(GUI 格式无关紧要(:[^,]*,.*
最后,我们需要使用组捕获捕获第一列: ([^,]*,).*
在替换字段中,我们使用反向引用$x
,它引用第 x 个捕获组。