7
votes

Comment écrivez-vous une regex pour capturer des nombres décimaux?

J'ai besoin d'écrire une regex qui capturera tous les numéros suivants à partir d'un exemple de texte: xxx

supposant que ce ne soit pas supérieur à 2 chiffres de chaque côté du point décimal , quelle regex dois-je utiliser?

merci.


0 commentaires

3 Réponses :


20
votes

Cela devrait fonctionner.

(\d*\.?\d+)
  • ( code> GROUPE DE CAPTURE DE COMMENCE LI>
  • \ d * code> n'importe quel chiffre zéro ou plusieurs fois li>
  • \. code> une période zéro ou une fois (c'est-à-dire s'il est facultatif) li>
  • \ d + code> n'importe quel chiffre One One One More Times Li>
  • ) code> Groupe de capture final Li> ul>

    Il correspondra à tout le numéro que vous avez répertorié et les capturera dans 1 $ code>. p> p>


6 commentaires

Vous pouvez supprimer les parenthèses et utiliser 0 $ pour obtenir le contenu de la correspondance de l'ensemble du regex.


Cela correspondra au 123.456 mais l'OP ne veut pas plus de 2 chiffres de chaque côté du point décimal.


@Tim merci pour la pointe. J'ai oublié 0 $ car j'ai tendance à constater que je veux généralement capturer une partie de la regex.


@ M42 Je suppose que je lis cela différemment de vous le faire. Je l'ai lu comme indiquant que l'entrée n'aura jamais plus de 2 chiffres de chaque côté de la décimale. Mal ajouter une seconde regex à clarifier.


@Jeff: Vous êtes probablement de la Rigth alors que l'OP a accepté la réponse :-)


@Jeff: :( Désolé d'avoir accepté votre réponse, M42 convient mieux à mon objectif.



5
votes

0 commentaires

9
votes

Cette regex fera le travail (c'est-à-dire pas plus de 2 chiffres de chaque côté du point décimal) xxx pré>

explication: strong> p>

^               # Begining of the string
  (?:           # begining of NON capture group
    \d{0,2}     # matches 0,1 or 2 digits
    \.          # decimal point
    \d{1,2}     # 1 or 2 digits
  )             # end of non capture group
$               # end of string

|               # OR

^               # Begining of the string
  \d{1,2}     # 1 or 2 digits
$               # end of string


0 commentaires