Tengo un caso en el que trato de reemplazar un determinado patrón por otro. Mi problema es que necesito reemplazar solo la última ocurrencia de ese patrón, no todos. He encontrado esta pregunta:Uso de expresiones regulares para reemplazar solo la última aparición de un patrón con JS
How to replace last occurrence of characters in a string using javascript
Pero no se ajusta a mis necesidades. Como telón de fondo, he de decir que estoy tratando de reemplazar una regla CSS, pero para el ejemplo actual Veamos este texto:
abcd:bka:
bbb:aad:
accx:aaa:
bbb:a0d:
cczc:aaa:
Digamos que sólo se desea reemplazar el valor de la acreditación. Mi regla actual será
text.replace(/(\s*bbb:)([^:]+)/,"$1aaa")
pero solo reemplazará la primera coincidencia, aunque quiero que reemplace la última. Mi patrón actual es en realidad más complejo que este, pero creo que el pseudo problema será suficiente.
Me gusta esta respuesta: http://stackoverflow.com/questions/843049/how-to-replace-last-occurence-of-a-word-in-javascript Prefacio con (. *) Para comer tanto como sea posible antes de hacer coincidir. –
@PeterEhrlich: Debería usar '[\ s \ S] *' en su lugar (el punto no coincide con las líneas nuevas), y generalmente prefiero ser explícito al usar expresiones regulares no específicas como '. *', Pero sí, eso funcionaría, también. Si su rendimiento será mejor o peor que el mío depende del texto real en el que se está utilizando. Sospecho que va a ser peor en textos grandes debido a todo el retroceso que causa '. *'. –