Notepad++ 搜索路径引用并替换为文件路径?
Notepad++ search for path reference and replace with the file's path?
我正在使用 notepad++,我有许多 xml 个文件。
例如,假设 XML 文件是 SomeXML.XML.
在该文件中,将包含以下条目:
//SERVER-NAME/Graphics/Materials/Downloaded/FabricGrey.jpg
我希望找到这些条目(它们都以 \SERVER-NAME 开头并以 jpg 或 png 结尾)并将它们替换为:
//Some的路径XML.XML/Fabric Grey.jpg
它一定是可行的 - 但我想不出来! H-E-L-P.
-- 第 1 部分:通用替换 --
你可以试试下面的正则表达式:
//.*/([^/]+\.(jpg|png))
分解:
- 2 个正斜杠
- 后跟一个或多个字符(
.
匹配任何内容,+
表示 1 个或多个)
- 后跟一个斜线
- 后跟不是斜线的任何内容:扩展名前的文件名(
[^\]
表示斜线以外的任何内容,+
再次表示一个或多个)。
- 后跟一个点(
\.
将点转义,因此按字面解释)
- 后接 jpg 或 png(
|
表示或)
那就换成你喜欢的吧。如果您在替换中使用 $1,它将被替换为文件名。因此,在您的示例中,SomeXML.XML/
将替换为 SomeXML.XML/Fabric Grey.jpg
。
-- 第二部分:用当前文件名替换SomeXML.XML --
不幸的是,不能在同一个替换操作中输入文件名。它必须分别为每个文件完成,但宏可以帮助加快速度。请注意,以下步骤包括录制所述宏,因此必须完全按照描述执行它们。
- 在notepad++中打开文件(先执行上述替换)。
- 单击宏 -> 开始录制。
- 按ctrl+f打开查找window.
- 转到替换选项卡。
- 在查找框中,但是
SomeXML.XML
。
- 清空替换框。
- 单击编辑 -> 复制到剪贴板 -> 当前文件名到剪贴板。
- 在替换为框中按 ctrl+v 粘贴文件名。
- 单击“全部替换”(不在所有打开的文档中)。
- 关闭替换-window.
- 单击宏 -> 停止录制。
- 现在在每个要替换的文件中,按 Ctrl+Shift+P 执行录制的宏。
不是完全自动化,但这应该已经让您的生活变得轻松多了。
这是一个 python 脚本版本:
import os.path
def replace_func(m):
try:
head, tail = os.path.split(m.group(0))
tail = "\" + tail
newname = os.path.dirname(notepad.getCurrentFilename()) + tail
newname = newname.replace("\","/")
return newname
except:
return m.group(0)
editor.rereplace('//.*/([^/]+\.(jpg|png))', replace_func)
我正在使用 notepad++,我有许多 xml 个文件。 例如,假设 XML 文件是 SomeXML.XML.
在该文件中,将包含以下条目: //SERVER-NAME/Graphics/Materials/Downloaded/FabricGrey.jpg
我希望找到这些条目(它们都以 \SERVER-NAME 开头并以 jpg 或 png 结尾)并将它们替换为:
//Some的路径XML.XML/Fabric Grey.jpg
它一定是可行的 - 但我想不出来! H-E-L-P.
-- 第 1 部分:通用替换 --
你可以试试下面的正则表达式:
//.*/([^/]+\.(jpg|png))
分解:
- 2 个正斜杠
- 后跟一个或多个字符(
.
匹配任何内容,+
表示 1 个或多个) - 后跟一个斜线
- 后跟不是斜线的任何内容:扩展名前的文件名(
[^\]
表示斜线以外的任何内容,+
再次表示一个或多个)。 - 后跟一个点(
\.
将点转义,因此按字面解释) - 后接 jpg 或 png(
|
表示或)
那就换成你喜欢的吧。如果您在替换中使用 $1,它将被替换为文件名。因此,在您的示例中,SomeXML.XML/
将替换为 SomeXML.XML/Fabric Grey.jpg
。
-- 第二部分:用当前文件名替换SomeXML.XML --
不幸的是,不能在同一个替换操作中输入文件名。它必须分别为每个文件完成,但宏可以帮助加快速度。请注意,以下步骤包括录制所述宏,因此必须完全按照描述执行它们。
- 在notepad++中打开文件(先执行上述替换)。
- 单击宏 -> 开始录制。
- 按ctrl+f打开查找window.
- 转到替换选项卡。
- 在查找框中,但是
SomeXML.XML
。 - 清空替换框。
- 单击编辑 -> 复制到剪贴板 -> 当前文件名到剪贴板。
- 在替换为框中按 ctrl+v 粘贴文件名。
- 单击“全部替换”(不在所有打开的文档中)。
- 关闭替换-window.
- 单击宏 -> 停止录制。
- 现在在每个要替换的文件中,按 Ctrl+Shift+P 执行录制的宏。
不是完全自动化,但这应该已经让您的生活变得轻松多了。
这是一个 python 脚本版本:
import os.path
def replace_func(m):
try:
head, tail = os.path.split(m.group(0))
tail = "\" + tail
newname = os.path.dirname(notepad.getCurrentFilename()) + tail
newname = newname.replace("\","/")
return newname
except:
return m.group(0)
editor.rereplace('//.*/([^/]+\.(jpg|png))', replace_func)