我正在使用记事本++,并且我有许多 xml 文件。例如,假设 XML 文件是 SomeXML.XML。
在该文件中,会有如下条目: //SERVER-NAME/Graphics/Materials/Downloaded/Fabric Grey.jpg
我希望找到这些条目(它们都以 \SERVER-NAME 开头并以 jpg 或 png 结尾)并将它们替换为:
//SomeXML.XML/Fabric Grey.jpg 的路径
它一定是可行的——但我想不通!帮助。
-- 第 1 部分:通用替换 --
您可以尝试以下正则表达式:
//.*/([^/]+\.(jpg|png))
分解它:
.
匹配任何内容,+
表示 1 个或多个)[^\]
表示除斜杠之外的任何内容,+
再次表示一个或多个)。\.
转义点,因此按字面意思解释)|
表示 OR)然后用你喜欢的任何东西替换。如果您在替换中使用 $1,它将被替换为文件名。因此,在您的示例SomeXML.XML/$1
中将替换为SomeXML.XML/Fabric Grey.jpg
.
-- 第二部分:用当前文件名替换 SomeXML.XML --
不幸的是,不能在相同的替换操作中输入文件名。它必须分别为每个文件完成,但宏可以帮助加快速度。请注意,以下步骤包括记录所述宏,因此它们必须完全按照描述执行。
SomeXML.XML
.不是完全自动化的,但这应该已经让你的生活更轻松了。
这是一个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)