1

У меня есть сценарий с большим количеством строк, как это:

ss Get $/%SS_SOURCE_PROJECT%/DLL/Vim25Service2005.dll -I-Y -R -VL%2
ss Get $/%SS_SOURCE_PROJECT%/97AUTO/*.* -I-Y -R -VL%2

Мы мигрируем из одного инструмента в другой (VSS -> TFS) и нам нужно портировать этот скрипт. Строки, подобные первой (получить отдельный файл), должны быть преобразованы в:

tf get . Vim25Service2005.dll /all /version:L%2

В то время как последний (получить каталог рекурсивно) должен быть преобразован в:

tf get 97Auto /all /recursive /version:L%2

Могу ли я автоматизировать это с помощью нескольких умных команд поиска и замены в notepad++, возможно, с помощью регулярных выражений?

1 ответ1

1

Для первой строки:

.*\$.*/([^\*]*) *-I *-Y *-R *-V *(.*)

Заменить: tf get . $1 /all /version:$2

Для второй строки:

.*\$.*/\*\.\* *-I *-Y *-R *-V *(.*)

.*\$.*/(.*)/\*\.\* *-I *-Y *-R *-V *(.*)

Заменить: tf get . /all /recursive /version:$1

tf get $1 /all /recursive /version:$2

Эти регулярные выражения обращаются к возможному отсутствию или дополнительному пробелу между вашими аргументами, но они ожидают, что ваши аргументы будут в указанном вами порядке (то есть -I, -Y, -R, -V). Если ваши аргументы не всегда в таком порядке, нам придется стать немного более креативными.

Протестировано в Notepad++ 6.3.3

Если вам нужно / хотите попробовать кое-что настроить, я рекомендую использовать инструмент регулярных выражений gskinner. Это отлично подходит для быстрого прототипирования регулярных выражений.

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