5

Я хочу найти замену & строки в тысячах файлов wavefront * .mtl, чтобы добавить много новых текстурных ссылок. Это даже возможно с регулярным выражением Notepad++? Я уже очень часто изменял эти файлы с помощью регулярных выражений, но эта задача стоит над моей головой!

В текущем состоянии я получил много Материальных частей в каждом файле, похожем на это:

newmtl Material__28
    Ns 0.000000
         ︙
    Kd 1.000000 1.000000 1.000000
    Ks 0.000000 0.000000 0.000000
    Ke 0.000000 0.000000 0.000000

    map_Kd textures\wall_exterior_wood_02.png

где точки представляют текст, который я не хочу менять (и который не содержит строку map_Kd).

И впоследствии он должен содержать PNG NRM & Spec, названные точно так же, как и первый map_Kd .

Пример:

newmtl Material__28
    Ns 0.000000
         ︙
    Kd 1.000000 1.000000 1.000000
    Ks 0.000000 0.000000 0.000000
    Ke 0.000000 0.000000 0.000000

    map_Kd   textures\wall_exterior_wood_02.png
    map_bump textures\wall_exterior_wood_02_nrm.png
    map_bump textures\wall_exterior_wood_02_nrm alternative.png
    map_Ks   textures\wall_exterior_wood_02_spec.png

Я добавил пробелы в линии map для ясности. Важно то, что имена PNG должны быть одинаковыми, за исключением префиксов " map_bump " и " map_ks " и постфиксов " _nrm ", " _nrm alternative " и " _spec ".

1 ответ1

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

Выражение поиска ищет "map_Kd", за которым следуют один или несколько пробелов (« \s+ »), затем сохраняются один или несколько непробельных символов (« (\S+) ») до тех пор, пока оно не достигнет « .png ».

Замена помещает строку, в которой вы храните, везде, где появляется " \1 ". Я также включил " \n " переводы строк и пробелы, чтобы выровнять вещи, как в вашем примере.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .