Notepad++ regex 添加行,复制字符串

ger*_*lix 5 notepad++ regex

我想在数千个波前 *.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”。

Tim*_*ffe 4

在记事本++中。

使用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”换行符和空格来对齐内容,如您的示例所示。