it-swarm-es.tech

¿Cómo creo una expresión regular en Emacs para exactamente 3 dígitos?

Quiero crear una expresión regular en Emacs que coincida exactamente con 3 dígitos. Por ejemplo, quiero hacer coincidir lo siguiente:

123
345
789

Pero no

1234
12
12 23

Si uso [0-9]+ Coincido con cualquier cadena de dígitos. Pensé [0-9]{3} funcionaría, pero cuando se prueba en el re-constructor no coincide con nada.

17
Alex B

Si está ingresando la expresión regular de forma interactiva y desea usar {3}, necesita usar barras invertidas para escapar de las llaves. Si no desea hacer coincidir ninguna parte de las cadenas de números más largas, use \b para hacer coincidir los límites de Word alrededor de los números. Esto deja:

\b[0-9]\{3\}\b

Para aquellos que desean más información sobre \b, ver los documentos :

coincide con la cadena vacía, pero solo al principio o al final de una palabra. Por lo tanto, \bfoo\b coincide con cualquier aparición de foo como una palabra separada. \bballs?\b coincide ball o balls como una palabra separada. \b coincide al principio o al final del búfer, independientemente del texto que aparezca al lado.

Si desea utilizar esta expresión regular del código elisp, como siempre, debe escapar de las barras invertidas una vez más. Por ejemplo:

(highlight-regexp "\\b[0-9]\\{3\\}\\b")
40
Joe Hildebrand

[0-9][0-9][0-9], [0-9]{3} o \d{3} no funciona porque también coinciden con "1234".

Entonces depende de cuál es el delimitador.

Si está en una variable, entonces puedes hacer ^/[0-9]{3}/$. Si está delimitado por espacios en blanco, puede hacer \w+[0-9]{3}\w+

8
SCdF

Deberías usar esto:

"^\d{3}$"
2
Lukas Šalkauskas

Como otros señalan, debe coincidir más que solo los tres dígitos. Antes de los dígitos, debe tener un inicio de línea o algo que no sea un dígito. Si emacs admite\D, úselo. De lo contrario, use el conjunto [^ 0-9].

En una palabra:

(^|\D)\d{3}(\D|$)
2
Antti Rasinen

Al experimentar con expresiones regulares en Emacs, encuentro regex-tool bastante útil:

ftp://ftp.newartisans.com/pub/emacs/regex-tool.el

No es una respuesta (la pregunta ya está respondida), solo un consejo general.

1
Chopmo

[0-9] [0-9] [0-9] coincidirá con un mínimo de 3 números, por lo que como Joe mencionó, debe (como mínimo) incluir\b o cualquier otra cosa que delimitará los números. Probablemente el método más seguro es:

[^ 0-9] [0-9] [0-9] [0-9] [^ 0-9]

0
decibel