it-swarm.it

RegEx - Abbina i numeri di lunghezza variabile

Sto cercando di analizzare un documento che contiene numeri di riferimento disseminati per tutto il documento.

Testo testuale {4: 2} testo più incredibile {4: 3} molto più tardi {222: 115} e ancora un po 'di testo.

I riferimenti saranno sempre racchiusi tra parentesi e ci sarà sempre un punto tra i due. Ho scritto un'espressione per trovarli.

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

Tuttavia, questo ovviamente fallisce nel momento in cui ti imbatti in un numero di due o tre cifre, e ho difficoltà a capire che cosa dovrebbe essere. Non ci saranno mai più di 3 cifre {999: 999} è la dimensione massima da trattare.

Qualcuno ha un'idea di un'espressione corretta per gestirlo?

95
Jarrod Nettles
{[0-9]+:[0-9]+}

prova ad aggiungere plus (es)

100
genesis

Che motore regex stai usando? Molti di loro supporteranno la seguente espressione:

\{\d+:\d+\}

Il \d è in realtà una scorciatoia per [0-9], ma la parte importante è l'aggiunta di + che significa "uno o più".

60
Lily Ballard

Prova questo:

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

Il {1,3} significa "corrispondenza tra 1 e 3 dei caratteri precedenti".

23
CanSpice

Puoi specificare quante volte vuoi che l'elemento precedente corrisponda utilizzando {min,max}.

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

Inoltre, puoi utilizzare \d per le cifre invece di [0-9] per la maggior parte delle espressioni regolari delle espressioni regolari:

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

Si potrebbe anche voler considerare l'escaping di { e }, solo per chiarire che non fanno parte di una definizione di ripetizione.

8
Andrew Clark

{\ d *:\d *} dovrebbe funzionare.

* significa corrispondere a 0 o più di occorrenze precedenti, che è una cifra.

0
Ryan Y