Usar grep para encontrar series de dígitos largos e insertar espacios delgados en ellos

En mi página tengo una tabla con más de 500 filas, en una columna donde todas las celdas contienen números diferentes, como 55123, 666000, 3000 y 1459000 (cifras de sumas de dinero). Necesitaría insertar espacios delgados en los números para que sean más fáciles de leer, de acuerdo con el siguiente esquema:

Siete dígitos seguidos se cambian a: d ddd ddd (p. ej., 1 459 000, d=dígito)

seis a: ddd ddd (ej. 666 000)

cinco a: dd ddd (ej. 55 123)

Cuatro a: d ddd (ej. 3000)

usando buscar/cambiar puedo encontrar todas las instancias de, por ejemplo, 7 dígitos en una fila con la línea grep \d{7} pero estoy perdido al tener un comando sobre cómo "cambiar" usando los números encontrados y agregando un delgado espacio en las posiciones correctas.

¿Hay alguna forma de escribir un script o una consulta de búsqueda/cambio para esta operación para hacer esto en cualquier parte del texto (o solo en la tabla)? ¡Cualquier consejo sobre esto es muy apreciado!

¡Hola Julius, bienvenido a GD.SE! Si tiene alguna pregunta sobre cómo funciona el sitio, eche un vistazo al centro de ayuda o siéntase libre de hacer ping a uno de nosotros en Graphic Design Chat una vez que su reputación llegue a 20. ¡Siga contribuyendo y disfrute del sitio!

Respuestas (1)

Hay un error en el motor de emparejamiento (al menos en mi diseño interno), lo arreglaremos primero.

  • Encontrar:

    (.)\Z

  • Reemplazar

    $1:

  • Reemplaza todo

Bien, ahora tenemos un ancla al final de la historia. Ahora la magia:

  • Encontrar:

    (\d)(?=(\d\d\d)+(:|\s))

    Explicación coincide con cualquier dígito seguido de cualquier número triplete de dígitos y: o cualquier espacio en blanco

  • Reemplazar

    $1~<

    Número y espacio delgado

  • Reemplaza todo

Y ahora volvamos a corregir el marcador final:

  • Encontrar:

    :\d

  • Reemplazar

    dejar vacío

  • Reemplaza todo

Hecho.

PD : puede probar si (\d)(?=(\d\d\d)+\Z)funciona, no funciona en mi máquina.