J'essaie d'analyser un document qui contient des numéros de référence.
Texte texte texte {4: 2} texte plus incroyable {4: 3} bien plus tard {222: 115} et encore du texte.
Les références seront toujours placées entre crochets 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 évidemment au moment où vous rencontrez un nombre à deux ou trois chiffres, et j'ai du mal à comprendre ce que cela 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 gérer cela?
regex
tag.Réponses:
essayez d'ajouter plus (s)
la source
Quel moteur de regex utilisez-vous? La plupart d'entre eux soutiendront l'expression suivante:
Le
\d
est en fait un raccourci pour[0-9]
, mais la partie importante est l'ajout de+
ce qui signifie «un ou plusieurs».la source
Essaye ça:
Les
{1,3}
moyens "correspondent entre 1 et 3 des caractères précédents".la source
Vous pouvez spécifier le nombre de fois que l’élément précédent doit correspondre à l’aide de
{min,max}
.En outre, vous pouvez utiliser
\d
pour les chiffres au lieu de[0-9]
pour la plupart des saveurs de regex:Vous pouvez également envisager d'échapper à l'extérieur
{
et}
, juste pour indiquer clairement qu'ils ne font pas partie d'une définition de répétition.la source
{\ d *: \ d *} devrait fonctionner.
* signifie correspondre à 0 ou plus des occurrences précédentes, qui est un chiffre.
la source