如何单次实现从指定位置到第6个反斜杠的搜索替换?
问题描述
我有如下格式的带编号文件路径文本:
1. "C:\OverPark\Casting\What You Are\L - New Takes\Justice and Truth\Dialogue\The Blessing Tree.wav" (77.3 MB) 2. "C:\OverPark\Casting\What You Are\L - New Takes\Infinity\External\Momha.wav" (34.9 MB) 3. "C:\OverPark\Casting\What You Are\L - New Takes\Intellect and Love\Music\The Most High.wav" (37.8 MB)
需求是将每行中编号及点之后到第6个反斜杠之间的内容替换(或删除),处理后效果如下:
1.Dialogue\The Blessing Tree.wav" (77.3 MB) 2.External\Momha.wav" (34.9 MB) 3.Music\The Most High.wav" (37.8 MB)
目前我可以通过两步操作实现:先用正则^(?:.*?\\){5}匹配目标区间并替换为唯一字符,再从行首替换到该字符。想问能不能通过单次搜索替换命令(或正则)完成此需求?
解决方案
完全可以用单次正则替换搞定,直接用这套搜索替换规则就行:
搜索正则:^(\d+\.)\s*".*?\\.*?\\.*?\\.*?\\.*?\\(.*)
替换内容:$1$2
简单逻辑说明:
^(\d+\.):先把行首的编号加圆点(比如1.、2.)捕获为第一个分组,这部分是要保留的内容\s*":跳过编号后面的空格和开头的引号.*?\\:重复5次,精准匹配到第6个反斜杠之前的所有冗余内容,这部分会被直接舍弃(.*):把第6个反斜杠往后的所有内容(也就是你需要保留的路径后半段)捕获为第二个分组- 替换时直接将两个分组拼接,就能得到目标格式
把这个正则放到支持正则替换的编辑器(比如Notepad++、VS Code)里,一次替换就能处理完所有行,不用分两步操作。
内容的提问来源于stack exchange,提问作者hummieru
相关产品推荐
相关产品推荐

