RegEx - Números coincidentes de longitud variable

130

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?

Ortigas Jarrod
fuente
8
Incluso si al OP no le importa, tengo curiosidad: ¿Por qué el voto negativo sobre esta pregunta? No veo nada malo en ello.
John
3
@John: Por alguna razón, a la gente le gusta rechazar preguntas donde hay respuestas fáciles, especialmente en la regexetiqueta.
CanSpice
1
Al final, esta pregunta obtuvo un rango más alto en Google y encontré mi respuesta en esta.
Jasonfish

Respuestas:

132
{[0-9]+:[0-9]+}

intenta agregar más

génesis
fuente
Esto me llevó demasiado tiempo encontrar ... ¡gracias por esta información!
nivel42
76

¿Qué motor regex estás usando? La mayoría de ellos admitirán la siguiente expresión:

\{\d+:\d+\}

En \drealidad es la abreviatura de [0-9], pero la parte importante es la adición de lo +que significa "uno o más".

Lily Ballard
fuente
31

Prueba esto:

{[0-9]{1,3}:[0-9]{1,3}}

Los {1,3}medios "coinciden entre 1 y 3 de los caracteres anteriores".

CanSpice
fuente
8

Puede especificar cuántas veces desea que coincida el elemento anterior mediante {min,max}.

{[0-9]{1,3}:[0-9]{1,3}}

Además, puede usar \dpara dígitos en lugar de [0-9]para la mayoría de los sabores regex:

{\d{1,3}:\d{1,3}}

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.

Andrew Clark
fuente
2
No, por favor, no lo haga con la mayoría de los sabores de expresiones
xanatos
1

{\ d *: \ d *} debería funcionar.

* significa coincidencia 0 o más de ocurrencias anteriores, que es un dígito.

Ryan Y
fuente