Notepad++ 正则表达式添加行,复制字符串

Notepad++ 正则表达式添加行,复制字符串

我想在数千个 wavefront *.mtl 文件中搜索替换和字符串以添加许多新的纹理链接。使用 Notepad++ 正则表达式可以做到这一点吗?我已经经常使用正则表达式修改这些文件,但这项任务超出了我的能力范围!

在当前状态下,每个文件中都有许多 Materialparts 如下所示:

newmtl 材质__28
    纳秒 0.000000
    科威特第纳尔 1.000000 1.000000 1.000000
    堪萨斯 0​​.000000 0.000000 0.000000
    柯 0.000000 0.000000 0.000000

    map_Kd 纹理\wall_exterior_wood_02.png

其中的点代表我不想更改的文本(并且不包含字符串map_Kd)。

之后它应该包含与第一个名称完全相同的 NRM 和 Spec PNG map_Kd

例子:

newmtl 材质__28
    纳秒 0.000000
    科威特第纳尔 1.000000 1.000000 1.000000
    堪萨斯 0​​.000000 0.000000 0.000000
    柯 0.000000 0.000000 0.000000

    map_Kd 纹理\wall_exterior_wood_02.png
    地图凹凸纹理\wall_exterior_wood_02_nrm.png
    地图凹凸纹理\wall_exterior_wood_02_nrm alternative.png
    map_Ks 纹理\wall_exterior_wood_02_spec.png

为了清晰起见,我在行中添加了空格map。重要的是,PNG 的命名应该相同,除了前缀“ map_bump”和“ map_ks”以及后缀“ _nrm”、“ _nrm alternative”和“ _spec”之外。

答案1

在 Notepad++ 中。

使用ctrl+ h(替换)

在左下角的搜索模式框中选择“正则表达式”单选按钮(确保匹配换行符复选框未勾选)

寻找:

map_Kd\s+(\S+)\.png

代替:

map_Kd \1.png\n map_bump \1_nrm.png\n map_bump \1_nrm_alternative.png\n mapKs \1_spec.png

find 表达式查找“​​map_Kd”,后跟一个或多个空格(“ \s+”),然后保留一个或多个非空格字符(“ (\S+)”),直到找到“ .png

替换会将您保留的字符串放在\1出现“ ”的任何位置。我还添加了“ \n”换行符和空格,以便像您的示例中那样对齐内容。

相关内容