Как повторить существующее слово с заполнителем для каждой строки в Notepad ++? - PullRequest
1 голос
/ 20 мая 2019

текущие строки

cp filename1*.csv 
cp filename2*.csv 
cp filename3*.csv 
....
cp filenamen*.csv 

Я хотел бы заменить эти строки дополнительными словами, в конце концов все строки должны быть такими:

cp filename1*.csv filename1.csv 
cp filename2*.csv filename2.csv 
cp filename3*.csv filename3.csv 
....
cp filenamen*.csv filenamen.csv 

Так это как заменить

{cp\s}{filename\d+}{.csv}

с

{0}{1}{2}{1}

Ответы [ 2 ]

3 голосов
/ 20 мая 2019

Если вы хотите использовать группы захвата, синтаксис будет () вместо {}

. Вы можете использовать 2 группы захвата, а в качестве замены использовать $0, чтобы обратиться ко всему совпадению и добавитьгруппа 1 и группа 2, чтобы получить захваченные значения для имени файла и CSV.

Вместо использования \s, который также соответствует символу новой строки, вы можете найти более 1 раза горизонтальный пробел \h+

Найти

\bcp\h+(filename\d+)\*(\.csv)

Заменить на:

$0 $1$2

Regex demo

2 голосов
/ 20 мая 2019

Мне удалось преобразовать ваши вещи в Notepad ++ из

cp filename1*.csv 
cp filename2*.csv 
cp filename3*.csv 

до

cp filename1*.csv filename1.csv 
cp filename2*.csv filename2.csv 
cp filename3*.csv filename3.csv 

с регулярным выражением поиска cp(\s+)(\w+)(\d+)\*\.csv и заменой регулярного выражения cp\1\2\3*.csv \2\3.csv.

Я не уверен, должна ли звезда быть в том же самом виде, так как из вашего поста не было ясно, означает ли это что-то еще или нет, поэтому я просто предположил, что это был буквальный символ, и избежал ее с помощью \*. Если это должно быть что-то еще, например, больше чисел, вы можете легко исправить ответ своими знаниями, поскольку вы, похоже, уже знакомы с регулярным выражением. Также, если предполагается, что * будет состоять из нескольких цифр, \d+ будет обрабатывать это.

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

...