2016-11-24 2 views
2

Exemplepour Advise expression régulière nécessaire

EL:123 
가나123.456다라 
123-ABC-456 
123.456+678.890 
AA03-BB1 
$.AB12,00 

Je veux extraire tout format numérique de chaîne.

Le nombre pourrait être | 100 000 | 20,000.00 | 12.52 | 10,800.082 |

Mon modèle est

@"\d[\d|,|.]+" 

Mais .. cela ne fonctionne pas pour un seul chiffre | 3 | 1 |.

J'ai aussi essayé

@"[\d|,|.]+" 

il ne devrait pas prendre | , | . | seulement.

Que dois-je faire avec mon motif regex?

+0

Remplacez '+' par '*' et supprimez '|'. Vous pouvez essayer '\ d [\ d,.] *'. Ou '\ d + (?: [,.] \ D +) *' –

+0

C'est quelque chose qui me dérange toujours: D au lieu de ** [\ d |, |.] ** use ** (\ d |, |.) ** –

+0

Utiliser \ d + Le signe plus signifie "au moins un ou plusieurs" – malutki5200

Répondre

2

Un \d[\d|,|.]+ regex ne trouvera pas 3 ou 1 parce \d nécessite 1 chiffre et le + avec [\d|,|.]+ nécessite également au moins un omble chevalier plus. Notez que cela correspond également 1| puisque le symbole de tuyau est considéré comme un caractère littéral dans la classe de caractères. Pour correspondre à 0 ou plusieurs occurrences, utilisez le quantificateur *.

correspondre à tous ces chiffres, vous pouvez utiliser soit

\d[\d,.]* 

Ou, mieux:

\d+(?:[,.]\d+)* 

Voir la regex demo

Détails:

  • \d+ - une ou plusieurs chiffres
  • (?:[,.]\d+)* - zéro ou plus (à cause de * quantificateur) les occurrences de:
    • [,.] - une virgule ou un point
    • \d+ - un ou plusieurs chiffres
+0

Merci! Existe-t-il une meilleure ressource pour apprendre l'expression régulière que la page MSDN? – ibocon

+0

Je peux suggérer de faire toutes les leçons à [regexone.com] (http://regexone.com/), en lisant [regular-expressions.info] (http://www.regular-expressions.info), [regex SO description de balise] (http://stackoverflow.com/tags/regex/info) (avec beaucoup d'autres liens vers d'excellentes ressources en ligne), et le post SO communautaire appelé [Que signifie regex] (http: // stackoverflow.com/questions/22937618/reference-ce-que-ce-regex-signifie). Aussi, [rexegg.com] (http://rexegg.com) vaut le coup d'oeil. Pour tester les modèles regex .NET, je peux recommander [Ultrapico Expresso] (http://www.ultrapico.com/expresso.htm). –

+1

Génial! Merci! – ibocon