Как найти и обратить первые два слова имени файла с помощью регулярного выражения, где слова разделяются. или пробел - PullRequest
1 голос
/ 28 марта 2019

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

Затем мне нужно поменять эти имена, разделив их знаком «.», И добавить оставшиеся слова.

Примеры:

«Питер О'Тул привет res.jpg» на «О'Тул.Peter.hi res.jpg»

«Стэнли Бейкер.jpg» на «Бейкер.Станли.jpg»

«Даниэль Дей-Льюис.jpg» - «Дей-Льюис. Даниель.jpg»

Если я использую:

([\ ш '-] +)

это дает мне все слова. Но заменить на:

$ 2. $ 1

не работает.

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

1 Ответ

0 голосов
/ 28 марта 2019

Чтобы соответствовать первым двум словам, вы можете использовать якорь, чтобы утверждать начало строки. Затем вы можете использовать свою группу захвата дважды, где ваш разделитель (и) может находиться между ними.

Если разделителем является пробел или табуляция, вы можете использовать:

^([\w'-]+)[ \t]+([\w'-]+)

Это будет соответствовать

  • ^ Начало строки
  • ([\w'-]+) Группа захвата 1
  • [ \t]+ Соответствует 1+ раз пробелу или символу табуляции (используйте \s в классе char для сопоставления с пробельным символом или используйте только один пробел для соответствия)
  • ([\w'-]+) Группа захвата 2

И заменить на:

$2.$1

Regex demo

...