vim números de búsqueda que contienen un número específico de dígitos


23

Necesito encontrar números de longitud específicos en un documento grande. Traté de usar expresiones regulares para esto. Por ejemplo, si necesito buscar números con exactamente 2 dígitos, lo uso \d\d(es decir, / d dos veces seguido de un espacio). Esto funciona bien

Pero para encontrar números de 10 dígitos no es realmente posible escribir \d10 veces.

Intentado \d{2}, dice ' E486: Patrón no encontrado: \ d {2} '

¿Hay alguna forma más rápida / fácil de lograr esto?

Respuestas:


32

Hay diferentes dialectos de expresión regular; algunos (por ejemplo, Perl) no requieren barras invertidas en el modificador de cuantificación ( \d{2}), algunos (por ejemplo, sed) requieren dos ( \d\{2\}), y en Vim, solo el rizado de apertura lo necesita ( \d\{2}). Ese es el triste estado de los dialectos de expresión regular incompatibles.

También tenga en cuenta que para hacer coincidir números exactos , debe anclar la coincidencia para que \d\{2}no coincida con los dígitos ( 12) 123. Esto se puede hacer con mirar hacia atrás y mirar hacia adelante negativos :

\d\@<!\d\{2}\d\@!

Perfecto. ¿Puedes por favor una información de línea en la expresión regular? Sería realmente útil Gracias
mtk

1
Para alguien que lucha con la sintaxis básica de expresiones regulares, mirar hacia atrás / adelante es bastante avanzado. Probablemente no pueda describirlo mejor que el incorporado :help /\@<!y :help /\@!. No se preocupe si no comprende todo de inmediato; como dije, esto es bastante avanzado.
Ingo Karkat

También puede colocarlo \val comienzo de la expresión regular si desea evitar tener que escapar {, consulte :help magicpara obtener más información (hace que vim regex se comporte un poco más como perl regex, aunque todavía hay diferencias).
evilsoup

Muchas gracias: \d\{4}en Vi es trivial
installero

9

Intenta lo siguiente:

\d\{2}

y se debe utilizar \no/

Puede obtener más información sobre la expresión regular de vim en este sitio o vimcon :help regular.



1

No es tan bonito, pero esto funcionó para mí durante 5 dígitos en un archivo de registro.

/\<\%(\d\d\d\d\d\)\>

-1

Para alguien como yo que llega a esta página simplemente para buscar un patrón que coincida con cualquier longitud de dígitos:

\d\+

(Me tomó algún tiempo descubrir el escape adicional obligatorio \ antes +)


+cuantificador significa 1 o más ocurrencias. Esta expresión regular coincide con 1 o más ocurrencias de dígitos.
gaganso
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.