expressão regular para inverter a ordem de duas palavras desconhecidas separadas por vírgula

expressão regular para inverter a ordem de duas palavras desconhecidas separadas por vírgula

Estou tentando usar expressões regulares ReNamer para reverter nomes de pastas que usam nomes de autores. Eles estão configurados como LastName, FirstNamee preciso alterá-los para FirstName LastName(menos a vírgula).

No ReNamer, o uso de expressões regulares é configurado como Expressão em uma linha e Substituir na segunda. Presumo que neste caso entre Entrada e depois Saída. Eu tentei várias soluções daqui, mas não consegui fazer nada funcionar. Eu mal entendo os conceitos básicos de regex, então toda e qualquer ajuda é muito apreciada.

De acordo com o programa de renomeação de arquivos e pastas, ReNamer, regex é a única opção entre várias opções que farão o que eu preciso. Tentei a sugestão de alguém de outro site. Na Linha de Expressão digitei ([^,]*), (.)e na Linha de Substituição digitei \2 \1. O resultado mudou Duncan, Davepara 2 1.

Responder1

Não conheço o ReNamer, mas seguindo a lógica regex isso deve funcionar:

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

Explicação:

  • inicial ^significa 'início da expressão'
  • os ()colchetes indicam parte da expressão que deve ser lembrada e pode ser usada na substituição como \1e \2.
  • [^,]*corresponde a todos os caracteres até, mas não incluindo, uma vírgula ( ^neste contexto significa 'não correspondente')
  • .*corresponde a todos os caracteres restantes
  • a primeira expressão entre colchetes é sua LastNamee a segunda expressão entre colchetes é suaFirstName

Responder2

Você deve fazer isso:

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

Lembre-se que para alguns caracteres de pontuação é necessário adicionar \antes no VI/VIM.

Saída:

, Primeiro nome, ultimo nome

informação relacionada