J'ai besoin d'écrire une regex qui capturera tous les numéros suivants à partir d'un exemple de texte: supposant que ce ne soit pas supérieur à 2 chiffres de chaque côté du point décimal , quelle regex dois-je utiliser? p> merci. p> p>
3 Réponses :
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>
Vous pouvez supprimer les parenthèses et utiliser 0 $ code> pour obtenir le contenu de la correspondance de l'ensemble du regex.
Cela correspondra au 123.456 code> 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 $ code> 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.
Jetez un coup d'œil à ceci: http://www.regular-expressions.info/floatingpoint. HTML P>
Cette regex fera le travail (c'est-à-dire pas plus de 2 chiffres de chaque côté du point décimal) 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