6
votes

Regex pour la distance dans le système métrique

Je veux un regex pour correspondre aux valeurs de distance dans le système métrique. Cette regex devrait correspondre 12m , 100cm , 1km ignorer l'espace blanc


2 commentaires

@ Nicklarsen, @ gumbo, @ Paul Dixon merci@fragsworth .. ses ta fautes de frappe comme vous l'avez dit et je suis désolé. J'apprécie vraiment les efforts de ceux qui ont fait des réponses @Lira .. Des problèmes simples à certains peuvent être très difficiles pour les autres qui peuvent être des experts dans différents domaines .. Assurez-vous que je le google très bien et que j'ai fini par apprendre la regex. . Donc, je peux aider les autres maintenant. Merci pour tout


IIRC: SI nécessite un espace blanche entre la valeur et l'unité.


4 Réponses :


4
votes

Comme vous ne spécifiez pas exactement ce que vous vouliez, j'ai utilisé vos exemples pour que vous souhaitiez trouver une valeur entière, suivi d'un espace optionnel, suivi d'un spécificateur d'unité de cm, m ou de km. Donc, c'est l'exemple le plus simple de cela.

/(\d+)\s*(m|cm|km)/


1 commentaires

Freeman: Vous noterez-vous normalement des distances de cette façon? 12,2 m est un moyen beaucoup plus naturel de le dire ..



12
votes

Essayez ceci:

(?:0|[1-9]\d*)\s*(?:da|[yzafpnμmcdhkMGTPEZY])?m


2 commentaires

PREMIÈRE PENSÉE Le YzAfPnμMCDHKMGTPEZY Une blague était une blague, ce sont les préfixes SI! :-)


Et n'oubliez pas les "quantifiers" supplémentaires proposés dans une mise à jour de 1993 au fichier jargon ( CATB.ORG/OESR/JARGON/HTML/Q/QUANTIFIERS.HTML ), nommément groucho / GROUCHI et HARPO / HARPI. Cela n'a pas été suggéré comment le conflit entre g = giga (1e9) et g = grouchi (1e30) pourrait être résolu.



7
votes

et pour étendre la réponse de Paul à inclure des valeurs de placement décimales ... xxx


2 commentaires

Bon point, même si j'ai essayé de produire la plus simple regex qui correspond au schéma général de ses exemples - des valeurs entières de centimètres, de mètres et de kilomètres. +1 - Bienvenue sur Stackoverflow :)


J'ai fait la même chose à l'origine, mais quand vous m'avez battu au poteau, je pensais que je l'étendrais :), merci pour l'accueil.



0
votes

L'expression régulière suivante nécessite une correspondance exacte du chiffre. Et jusqu'à 4 décimales. xxx pré>

et éventuellement avec une unité p> xxx pré>

et un espace entre l'unité P>

^(\d+)[.,]?(\d{1,4})[ ]?(mm|m|cm|km)$


1 commentaires

Cela ne prévoit que 4 chiffres derrière. ou, cela permet à E.G. 123,0 M Whis est valide dans Englisch mais pas par ex. localisation allemande. Cela permet à E.G. 123,0 m qui est valide selon E.G. Allemand mais pas dans la localisation anglaise. Cela n'autorise pas à plusieurs mûres. Ou, E.G 100.000.000 est valide en allemand ou 100 000,00 pour la localisation anglaise.