quelle est l'expression régulière d'une ligne de chaîne contenant UNIQUEMENT des nombres flottants séparés par des espaces ou des tabulations. Le nombre float peut être négatif, comme -999.999expression régulière: une ligne de chaîne contient uniquement des nombres flottants et des tabulations/espaces
Répondre
Formulons une regex pour un flottant, puis voyons ce que nous pouvons faire pour le reste.
Un flotteur est:
- Un signe négatif en option
- suivi d'un nombre de chiffres
- suivi d'un point décimal en option, puis plusieurs chiffres
- Suivi être « e »
- Suivi par un certain nombre de chiffres (avec un signe facultatif).
Ajoutez à cela, et nous obtenons:
/-?[0-9]+(\.[0-9]+)?([Ee][+-]?[0-9]+)?/
Maintenant, cela est assez lâche, mais vous pouvez modifier si vous voulez serrer un peu. Maintenant, pour un certain nombre de ceux-ci avec des espaces entre les deux, il est assez trivial:
/^(F\s+)+$/
Mettez tout cela ensemble, nous nous retrouvons avec:
/^(-?[0-9]+(\.[0-9]+)?([Ee][+-]?[0-9]+)?\s+)+$/
Vous pouvez généralement utiliser '\ d' au lieu de' [0-9] '.Aussi, que fait le 'F' dans votre second sous-régex? – Amber
Amber, Stephen, comment s'assurer qu'aucune chaîne n'est dans cette ligne? – Paul
@Amber: J'utilise cela comme un standin pour float regex, pour mieux montrer la structure de la solution résultante. @Paul: Les ancres au début et à la fin de l'expression rationnelle garantissent que le contenu * only * sur la ligne correspond bien à l'expression rationnelle. –
(?:-?(?:\d+(?:\.\d*)|.\d+)[ \t]*)+
est une possibilité. En format plus lisible:
(?:
-? # Optional negative sign
(?:
\d+(?:\.\d*) # Either an integer part with optional decimal part
|
.\d+ # Or a decimal part that starts with a period
)
[ \t]* # Followed by any number of tabs or spaces
)+ # One or more times
Quel est le (?: Pour? – Paul
@Paul: '(?:' Signifie un groupe * non-capturant * Normalement, lorsque vous enveloppez quelque chose entre parenthèses, le moteur regex garde la trace de ce qui correspond à ce truc, donc vous pouvez y accéder Une fois la regex terminée, c'est vraiment bon pour extraire des données, mais c'est un peu moins efficace que si le moteur n'avait pas besoin d'en garder trace. –
Les groupes qui ne capturent pas sont également utiles si vous voulez capturer certaines données, mais aussi regrouper des éléments que vous ne capturez pas. – Amber
Un regex pour un flotteur ressemblerait à ceci: -?\d+\.?\d+
Un séparateur des espaces ressemble à ceci: \s
les mettre ensemble, lui permettre de répéter, assurez-vous l'extrémité comporte un flotteur (pas un séparateur):
((-?\d+\.?\d*)\s)*(-?\d+\.?\d*))
l'échappement et \d
vs [0-9]
pourrait changer, en fonction de votre saveur de regex.
- 1. Expression régulière pour CSV avec des nombres
- 2. expression régulière "contient" une autre expression régulière
- 3. Vérifier si une chaîne contient des nombres
- 4. expression régulière pour détecter des nombres écrits comme des mots
- 5. Vérifier si la chaîne contient uniquement des chiffres
- 6. Expression régulière pour les nombres
- 7. ligne Obtenir une expression régulière
- 8. Expression régulière obtenir des infos de chaîne
- 9. Comment puis-je retourner uniquement des nombres et des espaces blancs dans l'expression régulière?
- 10. C++: Entrer uniquement des entiers/flottants?
- 11. Stockage des nombres en tant que nombres flottants
- 12. Expression régulière pour correspondre uniquement aux lettres
- 13. Comment cette expression régulière trouve-t-elle des nombres premiers?
- 14. expression régulière qui correspond à une chaîne qui comprend uniquement des lettres spécifiques
- 15. JavaScript et expression régulière, seuls les nombres et. ,
- 16. Expression régulière pour extraire des nombres d'une longue chaîne contenant beaucoup de ponctuation
- 17. Modifier une expression régulière pour une liste de nombres et d'expressions de plage numérique
- 18. expression régulière rupture sur une nouvelle ligne
- 19. Expression régulière pour trouver une expression régulière?
- 20. Correspondre à une expression régulière et affecter des résultats à une seule ligne de code
- 21. Explication des Lookaheads dans cette expression régulière
- 22. Expression régulière pour générer une chaîne
- 23. Expression régulière et retour à la ligne
- 24. Expression régulière pour exclure une chaîne?
- 25. Ruby expression régulière fin de ligne
- 26. javascript expression régulière pour supprimer les nombres finaux entre parenthèses
- 27. expression régulière et barre oblique
- 28. expression régulière et d'échappement
- 29. Vérifiez si la chaîne contient une plage de nombres
- 30. chaîne d'analyse avec une expression régulière
Quel est le format du numéro de flotteur? Des virgules? doit avoir des décimales? etc ... Ceci change drastiquement le RegEx –
Si ça aide, '^ [- +]? \ d * \.? \ d * $' correspond à un flottant valide, avec des décimales optionnelles. J'ai une regexp brillante qui fonctionnerait, mais cette boîte de commentaire est trop petite pour l'inclure. –
@Justin L: techniquement, cela pourrait correspondre '+ .' comme un 'flottant valide', ou même juste' + 'ou une chaîne vide. – Amber