1

Я хочу сделать следующее. У меня есть 1400+ из них, чтобы сделать.

Application=M:\8TB+\GOG.Com\99_Levels_To_Hell\Launch_99_Levels_To_Hell.Lnk
WorkingFolder=M:\8TB+\GOG.Com\99_Levels_To_Hell\

ExitMethod=WinClose

Я хочу сделать это

Application=M:\8TB+\GOG.Com\99_Levels_To_Hell\Launch 99 Levels To Hell.Lnk
WorkingFolder=M:\8TB+\GOG.Com\99_Levels_To_Hell\

ExitMethod=WinClose

Я только хочу нацелить часть между "Launch" и "Lnk". Удаление всех _ между.

Есть какой-либо способ сделать это?

1 ответ1

1

Как я могу заменить символ в последней части пути только в определенных строках, используя Notepad++?

Лучший и, возможно, единственный способ сделать это - регулярное выражение. Это заняло немного времени, но следующее должно работать:

Поиск: (?<!\\)(?!.*\\)_(?=.*Lnk)

Заменить на:

(пробел ↑)

(в текущих / всех документах; NB: ' 'это космический символ)

объяснение

  • Чтобы сопоставить детали после последнего обратного слеша, мы объединяем отрицательный взгляд сзади с отрицательным взглядом: (?<!\\)(?!.*\\) .

    (Я свободно признаю, что эта часть была немного черной магии, которую я до сих пор не до конца понимаю - нет \ позади и нет \ за которыми следуют какие-либо персонажи впереди?)

  • Подберите подчеркивание: _

  • Вы хотите сопоставлять только строки, соответствующие ярлыку Application , поэтому мы должны убедиться, что строка заканчивается символом ' Lnk ', используя отрицательный прогноз: (?=.*Lnk)

Резюме

Таким образом, в целом, он соответствует подчеркиванию, но только после последнего обратного слеша и только в строках, заканчивающихся на 'Lnk'. То есть (?<!\\)(?!.*\\)_(?=.*Lnk)

демонстрация

регулярное выражение в действии

Попробуйте это в regex101!


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

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