регулярное выражение для изменения порядка двух неизвестных слов, разделенных запятой

регулярное выражение для изменения порядка двух неизвестных слов, разделенных запятой

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

В ReNamer использование регулярных выражений настроено как Expression на одной строке и Replace на второй. Я предполагаю в этом случае Input, затем Output. Я пробовал несколько решений отсюда, но ничего не смог заставить работать вообще. Я едва понимаю экстремальные основы regex, поэтому любая помощь будет высоко оценена.

Согласно программе переименования файлов и папок ReNamer, regex — единственный вариант из нескольких, который сделает то, что мне нужно. Я попробовал чье-то предложение с другого сайта. В строке выражения я набрал, ([^,]*), (.)а затем в строке замены я набрал \2 \1. Результат изменился Duncan, Daveна 2 1.

решение1

Я не знаю ReNamer, но следуя логике регулярных выражений это должно работать:

From: "^([^,]*), (.*)"
To  : "\2 \1"

Объяснение:

  • инициал ^означает «начало выражения»
  • скобки ()указывают часть выражения, которую необходимо запомнить и которую можно использовать при замене как \1и \2.
  • [^,]*соответствует всем символам до запятой, но не включая ее ( ^в данном контексте означает «несоответствие»)
  • .*соответствует всем оставшимся символам
  • первое выражение в скобках — ваше LastName, а второе выражение в скобках — вашеFirstName

решение2

Вам следует сделать следующее:

:%s/\(^.*\,*\).*\(\,.*$\)/\2 \1/g

\Помните, что перед некоторыми знаками препинания в VI/VIM необходимо добавлять символы .

Выход:

, Имя Фамилия

Связанный контент