2010-01-06 9 views
1

Je veux une expression régulière pour un nombre qui est une chaîne continue de chiffres sans espaces - S'il vous plaît aider! Thankyouexpression reg pour un nombre

+0

pouvez-vous poster un exemple de chaîne pour correspondre? – jerjer

+0

par exemple, "some45b40", y a-t-il correspondance ou 45 et 40 correspondances? – jerjer

Répondre

-1

d * ou [0-9] * en fonction de la mise en œuvre ... Je suppose que

+0

Vous vouliez dire '\ d', n'est-ce pas? Utilisez '+' au lieu de '*': '\ d *' correspondra à une chaîne paire et vide. – Amarghosh

+0

'*' veut dire '0 ou plus', donc cela devrait correspondre' [0-9] * 'correspondrait à une chaîne vide. Pire, étant donné la chaîne 'abcd', cela retournerait 5 correspondances: une au début et à la fin de la chaîne, et une entre chaque caractère. Chaque match aurait une longueur de 0. '+' stipule '1 ou plus' et ne le ferait pas. –

5

C'est la plus simple:

^\d+$ 

Cette expression régulière correspond uniquement à des séquences d'un ou plus de chiffres. ^ et $ marquer respectivement le début et la fin de la chaîne.

Mais cela permettrait également des nombres avec des zéros en tête. Si vous ne voulez pas, utilisez ceci:

^(0|[1-9]\d*)$ 

Cela correspond soit un 0 ou un numéro commençant par 1 .. 9 suivie par zéro ou plusieurs chiffres arbitraires.

+0

'^' et '$' marquent respectivement le début et la fin de la ligne - ceci ne correspondra pas 'a123456b' en raison des caractères non numériques. Ce n'est pas clair pour moi que c'est ce que le PO était après. –

+0

Là encore, il n'est pas clair que ce soit * pas * ce que l'OP veut non plus. –

1

\d+ fonctionnera dans la plupart des implémentations.

\d indique digit - si votre implemenation n'a pas, utilisez à la place [0-9]+.

+ signifie one or more of the preceeding pattern.

modifier: Voici un exemple en python illustrant la différence entre + et *:

>>> import re 
>>> r = re.compile('[0-9]*') 
>>> print r.findall('asdf') 
['', '', '', '', ''] 
>>> r = re.compile('[0-9]+') 
>>> print r.findall('asdf') 
[] 
>>> print r.findall('abc12345ghi') 
['12345'] 
>>> r = re.compile('^[0-9]+$') 
>>> print r.findall('abc12345ghi') 
[] 
2

Si elle est juste pour regex:

\ d ne importe quel chiffre décimal; c'est équivalent à la classe [0-9].

vous pouvez donc écrire

\ d * ou [0-9] * - de chaîne vide à chaîne continue de chiffres

\ d + ou [0-9] + - à au moins un chiffre

Si vous voulez savoir comment l'utiliser dans une langue spécifique, spécifiez les langues.

Questions connexes