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

StackOverflow https://stackoverflow.com/questions/69591

  •  09-06-2019
  •  | 
  •  

Pregunta

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 reconstructor no coincide con nada.

¿Fue útil?

Solución

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

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

Para aquellos que quieran 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.De este modo, \bfoo\bcoincide con cualquier ocurrencia de foo como palabra separada. \bballs?\b partidos ball o balls como 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")

Otros consejos

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

Entonces depende de cuál sea el delimitador.

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

Deberías usar esto:

"^\d{3}$"

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

En una palabra:

(^|\D)\d{3}(\D|$)

Al experimentar con expresiones regulares en Emacs, encuentro herramienta de expresiones regulares bastante útil:

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

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

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

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

Es bastante simple:

[0-9][0-9][0-9]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top