Respuestas:
yo usaría \zs
:%s/.*\zspattern/replacement/
Un poco de explicación:
.
representa cualquier personaje individual*
representa la correspondencia codiciosa (tantas como sea posible)En Vim puede usar anclas de ancho cero \zs
y \ze
definir el inicio y el final del patrón buscado, que desea hacer coincidir. Cualquier cosa antes \zs
y después \ze
en su patrón no se verá afectada por el reemplazo.
Para que sea más fácil de entender, me gustaría utilizar este ejemplo de Wikia 's Buscar y reemplazar :
Ahorre escribiendo usando
\zs
y\ze
para establecer el inicio y el final de un patrón. Por ejemplo, en lugar de::s/Copyright 2007 All Rights Reserved/Copyright 2008 All Rights Reserved/
Utilizar:
:s/Copyright \zs2007\ze All Rights Reserved/2008/
Para más información, mira
.*
es codicioso .
Puede buscar la última coincidencia agrupando todos \(.*\)
, pero la última aparición de pattern
. Luego, salir con el grupo capturado \1
, y agregar el replacement
.
:%s/\(.*\)pattern/\1replacement/
\zs
solución de @ ryuichiro , ya que su \1
enfoque es funcionalmente equivalente, pero más detallado. (Por otro lado, puede ser más fácil de recordar para algunos, particularmente si están acostumbrados a otros sabores de expresiones regulares).)
En aras de la exhaustividad, pensé en publicar una alternativa. Vim tiene varios elementos, algunos de los cuales son similares a las aserciones de búsqueda de expresiones regulares más estándar (búsqueda anticipada / negativa negativa / positiva). /programming/2973436/regex-lookahead-lookbehind-and-atomic-groups
En este caso, queremos una anticipación negativa \@!
, lo que significa que queremos afirmar que el átomo que precede al elemento no ocurre después del patrón . En este caso, el átomo es el patrón en sí mismo precedido por cualquier otra cosa:
:%s/pattern\(.*pattern\)\@!/replacement/
La parte dentro de los paréntesis es de ancho cero y no se incluye en la coincidencia, por lo que no se reemplaza por la sustitución.
:h \@!
para obtener más información o :h pattern-multi-items
para toda la sección que contiene otras variaciones de búsqueda.
\zs
hace en su respuesta?