Saltar al contenido

Referencia inversa de expresiones regulares de Vim

Esta es la respuesta más exacta que encomtrarás compartir, sin embargo estúdiala detenidamente y analiza si se adapta a tu proyecto.

Solución:

Hay varios problemas aquí.

  1. los paréntesis en vim regexen no son para capturar; debe usar ( ) para capturas.

  2. * no significa lo que piensas. Significa “0 o más de los anteriores”, por lo que su expresión regular significa “un string eso contiene shop_ seguido de 0+ ( y luego un literal ).
    Estas buscando ., que en expresiones regulares significa “cualquier carácter”. Poner junto con una estrella como .* significa “0 o más de cualquier carácter”. Probablemente quieras al menos un carácter, así que usa .+ (+ significa “1 o más de los anteriores”)

Utilizar esta: %s/shop_(.+)/shop_1 wp_1/.

Opcionalmente termínelo con g después de la barra inclinada final para reemplazar todas las instancias en una línea en lugar de solo la primera.

Si te entiendo bien, quieres %s/shop_(.*)/shop_1 wp_1/

Escape del paréntesis de captura y use .* para que coincida con cualquier número de cualquier carácter.

(Su búsqueda busca “shop_” seguido de cualquier número de paréntesis de apertura seguidos de un paréntesis de cierre)

Puntuaciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *