【问题标题】:How to use regex to remove semi colons?如何使用正则表达式删除分号?
【发布时间】:2019-06-13 01:15:00
【问题描述】:
你好,我有这样的数据:
a;b;c;d
1;2;3;4
a;g;h;j
f;g;f;d
a;d;8;d
我想修改一下:
a;bc;d
1;23;4
a;gh;j
f;gf;d
a;d8;d
显然我有很多行,但每次分号都在同一个位置。我试图用记事本++选择列并用任何东西替换分号,但框是灰色的......
你有解决办法吗?
谢谢!
【问题讨论】:
标签:
regex
notepad++
sublimetext3
sublimetext2
【解决方案1】:
这是我进行工作的在线正则表达式测试器,您可以用样本替换您的数据。
Regex : (\w+;)((\w+);(\w+))(;\w+)
DEMO
【解决方案2】:
按住 ALT+SHIFT 并使用箭头键选择第二个分号并将其删除。
或
按住 ALT 并单击并拖动鼠标以选择第二个分号并将其删除。
或
【解决方案3】:
-
Ctrl+H
- 查找内容:
^[^;]+;[^;]+\K;
- 替换为:
LEAVE EMPTY
- 检查环绕
- 检查正则表达式
- 全部替换
说明:
^ # beginning of string
[^;]+ # 1 or more non semicolon
; # 1 semi colon
[^;]+ # 1 or more non semicolon
\K # forget all we have seen until this position
; # 1 semi colon
给定示例的结果:
a;bc;d
1;23;4
a;gh;j
f;gf;d
a;d8;d
【解决方案4】:
如果数据的可能值是小写字符 a-z 或数字,您还可以使用捕获组和字符类 [a-z0-9] 捕获前 3 个字符,然后匹配分号。如果可以有超过 1 个字符,您可以对字符类使用量词 +,例如 [a-z0-9]+
然后替换为第一个捕获组。
找到什么
^([a-z0-9];[a-z0-9]);
替换为
$1
Regex demo
或使用\K,您可以找到^[a-z0-9];[a-z0-9]\K; 并将替换为空。