Notepad++ 替换目录路径而不更改所有路径
我不太清楚这个词怎么说,但我认为这些例子会让它更容易理解。我有一个txt文件,路径指向文件。有些路径比我需要更改为新目录的其他文件更深一个目录。它们都在同一根路径中,因此基本的查找和替换会将新路径添加到每个条目中,我不希望: 常见路径:Notepad++ 替换目录路径而不更改所有路径,notepad++,Notepad++,我不太清楚这个词怎么说,但我认为这些例子会让它更容易理解。我有一个txt文件,路径指向文件。有些路径比我需要更改为新目录的其他文件更深一个目录。它们都在同一根路径中,因此基本的查找和替换会将新路径添加到每个条目中,我不希望: 常见路径: \maindirectory\dir1\file1.txt \maindirectory\dir2\file2.txt 需要更改的路径: \maindirectory\file.exe \maindirectory\file900.doc 致: 有没有办法
\maindirectory\dir1\file1.txt
\maindirectory\dir2\file2.txt
需要更改的路径:
\maindirectory\file.exe
\maindirectory\file900.doc
致:
有没有办法找到并替换“\maindirectory”或文件之外的目录,然后将行更改为“\maindirectory\newdir”,而不添加“\maindirectory\newdir\dir1”或逐行更改?您可以用于此操作
\1newdir\\\2
逐字匹配“\maindirectory”并将其捕获到组1中(\\maindirectory\\)
匹配除“”以外的一个或多个字符,并在组2中捕获它们([^\\]+)
“newdir\”
+第2组捕获的内容
经过一些修补和测试,我能够想出以下解决方案: 首先,查找并替换为Normal表达式:
Find: \maindirectory\
Replace: \maindirectory\newdir\
然后使用正则表达式查找并替换:
Find: \\maindirectory\\(\b.+?)\\(\b.+?)\\
Replace: \\maindirectory\\$2\\
这样做的目的是将\maindirectory\newdir\添加到每一行,然后使用正则表达式行删除第二个目录(\$2\)如果存在3,则将旧路径合并回原来的状态。我希望这对将来的人有所帮助。这也有效。谢谢!请注意,
\b
不应在此处使用。在这种情况下,可能会导致一些误判(例如,如果您的目录以非字母数字字符开头,如“@something”)。此外,无需执行两个查找和替换操作。如我的回答所示,只需使用一个即可实现。事实上,在我的情况下不是这样,因为(\\maindirectory\\)([^\\]+)$
一次捕获多行。我认为这取决于每个列表的格式。您可以将[^\\\]+
部分替换为[^\\\\\\\ r\n]+
或使用+?
(正如您在回答中所做的;只是没有\b
)。
Find: \maindirectory\
Replace: \maindirectory\newdir\
Find: \\maindirectory\\(\b.+?)\\(\b.+?)\\
Replace: \\maindirectory\\$2\\