Texto y herramientas cotidianas · Text Toolkit
Grupos de captura de expresiones regulares en buscar y reemplazar: reordenar fechas con $1, $2, $3
· Cómo funciona
expresión regular buscar y reemplazar fechas
Muestra cómo los paréntesis capturan partes de una coincidencia y cómo $1, $2 y $3 las reutilizan en el reemplazo, utilizando la clásica reescritura de fecha ISO de día, mes y año y algunas otras reordenaciones.
Cuatrocientas fechas en el orden incorrecto: por qué editar manualmente 2024-01-02 en 02/01/2024 es un trabajo para grupos de captura
Una exportación de hoja de cálculo puede dejar cuatrocientas fechas en orden año-mes-día estilo ISO cuando una hoja de cálculo del Reino Unido espera el día/month/year. Editar `2024-01-02` en `02/01/2024` a mano es lento, pero el mayor riesgo es la inconsistencia: una fila omitida o un dígito transpuesto puede sobrevivir hasta que se distribuya un informe.
Buscar y reemplazar puede tratar cada fecha como la misma disposición de partes en lugar de cuatrocientas cadenas no relacionadas. Una expresión regular identifica el año, mes y día, mientras que el reemplazo escribe esas partes capturadas en otro orden. Los dígitos originales se reutilizan, por lo que la operación cambia de estructura en lugar de volver a escribir valores.
Qué capturan los paréntesis: cómo cada grupo obtiene un número de izquierda a derecha y qué coinciden \d{4} y \d{2}
Los paréntesis crean grupos de captura. En `(\d{4})-(\d{2})-(\d{2})`, el primer grupo captura cuatro dígitos, el segundo captura dos y el tercero captura dos. `\d` significa un dígito en este patrón de JavaScript, mientras que `{4}` y `{2}` especifican el número exacto de repeticiones requeridas dentro de cada grupo.
Los grupos reciben números de cada paréntesis de apertura a medida que el motor lee de izquierda a derecha. Para `2024-01-02`, el grupo 1 es `2024`, el grupo 2 es `01` y el grupo 3 es `02`; los guiones coinciden con los separadores pero se encuentran fuera de los paréntesis, por lo que no se conservan como valores capturados.
Usando $1, $2 y $3 en el reemplazo: reconstruir la coincidencia en un nuevo orden con nuevos separadores
El reemplazo `$3/$2/$1` le pide a JavaScript que inserte la tercera captura, una barra, la segunda captura, otra barra y la primera captura. Aplicadas al ejemplo, esas referencias producen `02/01/2024`. Las referencias en dólares son instrucciones de reemplazo, no texto que también deba aparecer en la fecha coincidente.
ToolAcre pasa la cadena de reemplazo a la operación de reemplazo de cadena de JavaScript estándar. Su fuente admite explícitamente referencias numeradas como `$1`, `$2` y `$3`, y el patrón de búsqueda se compila globalmente. Esa bandera global es la razón por la cual cada fecha coincidente se reescribe en una operación en lugar de solo la primera coincidencia.
Ejemplo resuelto: (\d{4})-(\d{2})-(\d{2}) reemplazado con $3/$2/$1, luego verificando el recuento de reemplazos con el recuento de filas
Pegue la columna exportada, active Regex, ingrese `(\d{4})-(\d{2})-(\d{2})` en Buscar e ingrese `$3/$2/$1` en Reemplazar. Al seleccionar Reemplazar todo, primero se cuentan las coincidencias y luego se reescriben, de modo que el resultado informe cuántas cadenas con forma de fecha se cambiaron en todo el texto pegado.
Compare ese número con el recuento de filas esperado antes de copiar el resultado a la hoja de cálculo. Un recuento menor indica espacios en blanco o fechas en otro formato; un recuento más alto significa que también coincide texto similar en otros lugares. La herramienta no tiene una vista previa de reemplazo, así que use su acción Deshacer si el recuento o la salida revela un patrón demasiado amplio.
Más reordenamientos: 'Apellido, Nombre' a 'Nombre Apellido' e intercambio de columnas de una lista de dos columnas
El mismo principio puede cambiar `Surname, Forename` en `Forename Surname` cuando cada línea contiene de manera confiable una coma: busque `([^,]+), ([^\r\n]+)` y reemplácela con `$2 $1`. Aquí cada grupo captura texto en un lado del separador conocido, en lugar de asumir un número fijo de dígitos.
Un intercambio de dos columnas no es una operación de tabla incorporada, a pesar de la redacción general. Sólo funciona cuando el texto pegado tiene un delimitador confiable y el patrón describe los límites de las líneas de manera segura. Las comas dentro de los nombres, los campos faltantes o las pestañas inconsistentes requieren una limpieza o un patrón más preciso antes de que cualquier reemplazo masivo sea confiable.
Más reordenamientos funcionan solo cuando la entrada tiene un separador confiable
Un punto en un patrón significa casi cualquier carácter, por lo que un patrón de fecha escrito como `(\d{4}).(\d{2}).(\d{2})` también acepta barras, espacios o letras entre campos. Escapa de un punto literal como `\.` y escapa de otros metacaracteres cuando deberían coincidir entre sí. Se informa un corchete no válido o un paréntesis sin terminar sin cambiar el texto.
La numeración de grupos comienza en 1, no en 0. Los signos de dólar también tienen un significado de reemplazo especial: `$&` inserta la coincidencia completa y `$$` produce un signo de dólar literal. Este comportamiento se aplica incluso cuando el modo de expresión regular está desactivado porque ToolAcre escapa solo del lado de búsqueda; no escapa de la cadena de reemplazo antes de que JavaScript la procese.
Lo que esto no cubre: grupos con nombre, búsqueda retrospectiva y nombres de meses que necesitan una tabla de búsqueda
Los grupos numerados pueden reorganizar el texto que ya está presente en una coincidencia, pero no pueden traducir `Jan` a `01` porque eso requiere una búsqueda en lugar de reordenarlo. Este artículo tampoco se basa en grupos con nombre ni búsqueda retrospectiva, cuya utilidad y compatibilidad con el navegador implican un conjunto de opciones diferente al de esta simple limpieza de exportación.
La expresión de fecha verifica la forma, no la verdad del calendario. Coincidirá con `2024-99-88` porque dos dígitos satisfacen cada grupo más pequeño. Valide las fechas en la hoja de cálculo o en el sistema fuente cuando la exactitud sea importante. Buscar y reemplazar es apropiado para un formato coherente, no para demostrar que cada mes y día capturados es válido.
La conclusión: un patrón, un reemplazo, cada fila arreglada a la vez en el Text Toolkit, con posibilidad de deshacer si el resultado no es el esperado
Los grupos de captura convierten una cadena coincidente en piezas reutilizables. Para una columna de fecha uniforme, tres grupos conservan el año, mes y día originales, mientras que `$3/$2/$1` los coloca en orden del Reino Unido. La búsqueda global maneja todas las coincidencias y el recuento informado proporciona una verificación inmediata del número de filas que deseaba cambiar.
Mantenga el flujo de trabajo revisable: conserve una copia de la exportación, use el patrón más limitado que se ajuste, compare el recuento, inspeccione varios resultados y deshaga cuando la evidencia no esté de acuerdo con sus expectativas. Un reemplazo bien definido puede eliminar la edición repetitiva sin pretender que cada valor en forma de dígito sea automáticamente una fecha válida.