175 votes

RegEx - Correspondance avec des nombres de longueur variable

J'essaie d'analyser un document qui contient des numéros de référence.

Texte texte texte texte {4:2} plus incroyable {222:115} et encore d'autres textes.

Les références seront toujours placées entre parenthèses, et il y aura toujours un deux-points entre les deux. J'ai écrit une expression pour les trouver.

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

Cependant, cela échoue manifestement dès que l'on tombe sur un nombre à deux ou trois chiffres, et j'ai du mal à trouver ce qu'il devrait être. Il n'y aura jamais plus de 3 chiffres {999:999} est la taille maximale à traiter.

Quelqu'un a-t-il une idée d'une expression appropriée pour traiter ce problème ?

175voto

genesis Points 32591
{[0-9]+:[0-9]+}

essayer d'ajouter des plus

98voto

Kevin Ballard Points 88866

Quel moteur de regex utilisez-vous ? La plupart d'entre eux prendront en charge l'expression suivante :

\{\d+:\d+\}

En \d est en fait une abréviation de [0-9] mais la partie la plus importante est l'ajout de + qui signifie "un ou plusieurs".

41voto

CanSpice Points 14749

Essayez ceci :

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

En {1,3} signifie "correspondre à 1 à 3 des caractères précédents".

10voto

Andrew Clark Points 77748

Vous pouvez spécifier le nombre de fois que vous souhaitez que l'élément précédent corresponde en utilisant la fonction {min,max} .

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

Vous pouvez également utiliser \d pour les chiffres au lieu de [0-9] pour la plupart des saveurs d'expressions rationnelles :

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

Vous pouvez également envisager d'échapper à la zone extérieure de l'interface. { y } pour qu'il soit clair qu'ils ne font pas partie d'une définition de la répétition.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X