Estoy tratando de analizar un documento que tiene números de referencia esparcidos por todo.
Texto texto texto {4: 2} texto más increíble {4: 3} mucho más tarde en {222: 115} y aún más texto.
Las referencias siempre estarán entre paréntesis, y siempre habrá dos puntos entre los dos. Escribí una expresión para encontrarlos.
{[0-9]:[0-9]}
Sin embargo, esto obviamente falla en el momento en que te encuentras con un número de dos o tres dígitos, y estoy teniendo problemas para descubrir cuál debería ser. Nunca habrá más de 3 dígitos {999: 999} es el tamaño máximo para tratar.
¿Alguien tiene una idea de una expresión adecuada para manejar esto?
regex
etiqueta.Respuestas:
intenta agregar más
fuente
¿Qué motor regex estás usando? La mayoría de ellos admitirán la siguiente expresión:
En
\d
realidad es la abreviatura de[0-9]
, pero la parte importante es la adición de lo+
que significa "uno o más".fuente
Prueba esto:
Los
{1,3}
medios "coinciden entre 1 y 3 de los caracteres anteriores".fuente
Puede especificar cuántas veces desea que coincida el elemento anterior mediante
{min,max}
.Además, puede usar
\d
para dígitos en lugar de[0-9]
para la mayoría de los sabores regex:También puede considerar escapar de lo externo
{
y}
, solo para dejar en claro que no son parte de una definición de repetición.fuente
{\ d *: \ d *} debería funcionar.
* significa coincidencia 0 o más de ocurrencias anteriores, que es un dígito.
fuente