El problema con su expresión regular es el uso de concordancia ambiciosa en el (\d+\R)+
, específicamente en el último +
. Que dice, "unir a este grupo tantas veces como puedas siempre y cuando no cause la desaparición de un partido". Por lo tanto, para su texto engulle 1, 2, 3 y 4 antes de que no pueda engullir más y ponga el último partido en el segundo grupo de captura. Obviamente, está en la naturaleza de los motores de expresiones regulares el no poder expresar grupos variados, ¿cómo los abordaría de todos modos? Entonces, la respuesta corta, creo, es que las expresiones regulares son la herramienta incorrecta para un proceso totalmente automático y tendrás que escribir un script.
Sin embargo, para un proceso ligeramente menos automatizado que todavía incorpora el texto circundante, podría intentar
find: (\w+\R)((?:\d+\R)+)(\w+)
replace: \1prefix\2\3
Nos envolvemos el segundo grupo y además es modificador codiciosos en un juego extra de parens capturar y encerrar el juego real texto en un grupo que no captura Ahora, tenemos el conjunto completo de dígitos en su propio grupo y podemos agregar el prefijo al primero. El efecto secundario interesante de esto es que el primer número coincide entonces con el primer grupo (\w+\R)
y si ejecuta el buscar/reemplazar nuevamente, golpea el siguiente número en la línea hasta que ya no coincida.
De esta forma, debería poder ejecutar sus archivos al menos solo al tocar las áreas que le interesan para agregar este prefijo y no debería tomar casi tanto tiempo como encontrar cada dígito en cada archivo.
'multiple' o' mutable'? – leppie
Esto es en realidad una simplificación de mi expresión real real. Pero la idea es que el texto alrededor de los dígitos me ayude a detectar el área que tengo que editar. Tengo muchos archivos grandes para editar y ejecutar un reemplazo paso a paso con una expresión regular más simple tomaría un tiempo – Garagos