我想在数千个波前 *.mtl 文件中搜索替换和字符串以添加许多新的纹理链接。Notepad ++正则表达式甚至可以做到这一点吗?我已经经常使用正则表达式更改这些文件,但这项任务超出了我的能力范围!
在当前状态下,我在每个文件中都有很多 Materialpart,如下所示:
newmtl材料__28
Ns 0.000000
?
Kd 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
Ns 0.000000
?
Kd 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_bump 纹理\wall_exterior_wood_02_nrm.png
map_bump 纹理\wall_exterior_wood_02_nrm 替代.png
map_Ks 纹理\wall_exterior_wood_02_spec.png
map为清晰起见,我在线条中添加了空格。重要的是,PNG 的命名应该相同,除了前缀“ map_bump”和“ map_ks”以及后缀“ _nrm”、“ _nrm alternative”和“ _spec”。
在记事本++中。
使用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”换行符和空格来对齐内容,如您的示例所示。