0

我正在使用记事本++,并且我有许多 xml 文件。例如,假设 XML 文件是 SomeXML.XML。

在该文件中,会有如下条目: //SERVER-NAME/Graphics/Materials/Downloaded/Fabric Grey.jpg

我希望找到这些条目(它们都以 \SERVER-NAME 开头并以 jpg 或 png 结尾)并将它们替换为:

//SomeXML.XML/Fabric Grey.jpg 的路径

它一定是可行的——但我想不通!帮助。

4

2 回答 2

0

-- 第 1 部分:通用替换 --

您可以尝试以下正则表达式:

//.*/([^/]+\.(jpg|png))

分解它:

  • 2个正斜杠
  • 后跟一个或多个字符(.匹配任何内容,+表示 1 个或多个)
  • 后跟一个斜线
  • 后跟任何不是斜杠的内容:扩展名之前的文件名([^\]表示除斜杠之外的任何内容,+再次表示一个或多个)。
  • 后跟一个点(\.转义点,因此按字面意思解释)
  • 后跟 jpg 或 png(|表示 OR)

然后用你喜欢的任何东西替换。如果您在替换中使用 $1,它将被替换为文件名。因此,在您的示例SomeXML.XML/$1中将替换为SomeXML.XML/Fabric Grey.jpg.

notepad++中替换窗口的截图

-- 第二部分:用当前文件名替换 SomeXML.XML --

不幸的是,不能在相同的替换操作中输入文件名。它必须分别为每个文件完成,但宏可以帮助加快速度。请注意,以下步骤包括记录所述宏,因此它们必须完全按照描述执行。

  1. 在 notepad++ 中打开文件(首先执行了上述替换)。
  2. 单击宏 -> 开始录制。
  3. 按 ctrl+f 打开查找窗口。
  4. 转到替换选项卡。
  5. 在查找框中,但是SomeXML.XML.
  6. 清空替换为框。
  7. 单击编辑 -> 复制到剪贴板 -> 当前文件名到剪贴板。
  8. 在替换为框中按 ctrl+v 以粘贴文件名。
  9. 单击全部替换(不在所有打开的文档中)。
  10. 关闭替换窗口。
  11. 单击宏 -> 停止录制。
  12. 现在,在要进行替换的每个文件中,按 Ctrl+Shift+P 执行录制的宏。

不是完全自动化的,但这应该已经让你的生活更轻松了。

于 2015-07-15T15:41:21.740 回答
0

这是一个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)
于 2015-07-18T02:40:24.487 回答