Estoy tratando de usar una expresión regular para reemplazar el texto en un archivo (reemplace una URL completa con solo protocolo / dominio /):
:%s/\(https\?:\/\/.*?\/\).*/\1/gc
Lamentablemente .*?no coincide con la cadena, incluso tratando de escapar del ?cuantificador? ¿Cómo se debe escapar el cuantificador no codicioso en vim?
regular-expression
guido
fuente
fuente

:help greedyte habría llevado al tema de ayuda correcto.:help regexpes la ayuda que describe el sabor regex de Vim.Respuestas:
La expresión regular de Vim tiene una sintaxis especial para las versiones no codiciosas de los operadores (es un poco molesto, pero solo tienes que memorizarlas): http://vimregex.com/#Non-Greedy
La versión no codiciosa de
*es\{-}. Entonces, simplemente reemplace.*con.\{-}:fuente
Prefiero siempre dividir el problema en dos pasos:
Usando "\ v" muy mágico para evitar muchas barras invertidas, haciendo referencia a la última búsqueda en sustitución y cambiando el delimitador de sustitución. Todos estos cambios hacen que el código sea más legible.
fuente
También puede usar el
[^\]+/.para evitar la codicia.[^/]significa "igualar todo lo que se espera/, y lo+repite una o más veces ..Si tengo
/en la expresión regular, lo usaré!como separador para no tener que escapar/.Ejemplo
Supongamos que tiene las siguientes URL:
Aplicando la sustitución obtendría eso:
fuente