如何替换文本中间重复字符及在Notepad++中用正则替换每行首个冒号
解决仅替换每行第一个重复单个字符的问题
刚好碰到过类似的需求,在Notepad++里用正则表达式就能轻松搞定,下面一步步给你讲清楚:
核心思路
要只替换每行的第一个目标字符(比如你的冒号),关键是精准定位每行的第一个目标字符,同时避开后面的重复字符。这里用非贪婪匹配的正则表达式就能实现,它会从行首开始,找到第一个出现的目标字符就停止匹配,不会波及后面的。
Notepad++具体操作步骤
- 打开你的目标文本,按下
Ctrl+H调出替换窗口 - 在「查找模式」里选中「正则表达式」,注意不要勾选「.匹配换行符」(我们要按单行处理)
- 填写以下内容:
- 查找内容:
^(.*?): - 替换内容:
$1;
- 查找内容:
- 点击「全部替换」,搞定!
正则表达式解释
^:匹配每行的开头,确保我们只处理当前行的内容.*?:非贪婪匹配任意字符(除了换行),这里的?是关键,它会让正则尽可能少地匹配字符,直到找到第一个:就停止::就是我们要替换的目标字符$1:引用前面(.*?)捕获到的内容,把它保留下来,再加上我们要替换成的;,这样就实现了只把第一个:换成;,其他内容原封不动
测试用例验证
原始文本:
test1:|TEST:-TEST.|
test2:|TEST:-TEST.|
test3:_|TEST:-TEST.|
替换后结果:
test1;|TEST:-TEST.|
test2;|TEST:-TEST.|
test3;_|TEST:-TEST.|
如果是其他重复的单个字符,只需要把查找内容里的:换成你要替换的字符,替换内容里的;换成目标字符就行,方法通用。
内容的提问来源于stack exchange,提问作者Happy
相关产品推荐
相关产品推荐

