expresión regular para invertir el orden de dos palabras desconocidas separadas por una coma

expresión regular para invertir el orden de dos palabras desconocidas separadas por una coma

Estoy intentando utilizar expresiones regulares de ReNamer para invertir los nombres de carpetas que utilizan nombres de autor. Están configurados como LastName, FirstNamey necesito cambiarlos a FirstName LastName(menos la coma).

En ReNamer, el uso de expresiones regulares se configura como Expresión en una línea y Reemplazar en la segunda. Supongo que en este caso Entrada y luego Salida. Probé varias soluciones desde aquí pero no pude hacer que nada funcionara. Apenas entiendo los conceptos básicos extremos de las expresiones regulares, por lo que toda ayuda es muy apreciada.

Según el programa de cambio de nombre de archivos y carpetas, ReNamer, la expresión regular es la única opción entre varias que hará lo que necesito. Probé la sugerencia de alguien de otro sitio. En la Línea de expresión escribí ([^,]*), (.)y luego en la Línea de reemplazo escribí \2 \1. El resultado cambió Duncan, Davea 2 1.

Respuesta1

No conozco ReNamer pero siguiendo la lógica de expresiones regulares esto debería funcionar:

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

Explicación:

  • inicial ^significa 'inicio de la expresión'
  • los ()corchetes indican parte de la expresión que debe recordarse y puede usarse en el reemplazo como \1y \2.
  • [^,]*coincide con todos los caracteres hasta la coma, pero sin incluirla ( ^en este contexto significa "no coincidente")
  • .*coincide con todos los caracteres restantes
  • la primera expresión entre corchetes es tu LastNamey la segunda expresión entre corchetes es tuFirstName

Respuesta2

Usted debe hacer esto:

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

Recuerde que para algunos caracteres de puntuación es necesario agregarlos \antes en VI/VIM.

Producción:

, Nombre Apellido

información relacionada