2008-12-10 4 views
1

Dans une application que je développe, quelqu'un a pensé que ce serait une bonne idée d'inclure des virgules dans les valeurs d'un fichier csv. Donc ce que j'essaye de faire sélectionne ces valeurs et enlève ensuite les virgules de ces valeurs. Mais le Regex que j'ai construit ne correspondra à rien.Utilisation d'une expression régulière pour trouver des champs spécifiquement mis en forme

Le modèle est Regex:.*,\"<money>(.+,.+)\",?.*

Et le genre de valeurs que je suis en train de faire correspondre serait le 2700, 2650 and 2600 in "2,700","2,650","2,600". .

Répondre

0

Merci pour la réponse Ryan. J'aurais dû garder mon sang-froid un peu plus. Bien que toujours, des virgules dans un CSV qui ne séparent pas les valeurs? Après avoir demandé au bureau, je me suis dirigé vers une application de conception Regex gratuite que j'ai utilisée pour créer le modèle dont j'avais besoin. L'application est Rad Software Regular Expression Designer

Oh et aux fins de réponse du modèle que je suis sorti avec est: \"(?<money>[0-9,.$]*)\"

Edit: Finale Andwer

Woah. Complètement oublié de cette question. Je jouais encore plus avec la regex et en sortais une qui correspondait à tout ce dont j'avais besoin. Le regex est:

\"([0-9.$]+(,[0-9.]+)+)\"

Ce regex a été en mesure de faire correspondre une chaîne de deciaml dans un double citation que je l'ai jeté à elle.

2

Virgules sont autorisés dans ce CSV et ne devrait pas causer un problème si vous utilisez un identificateur de texte (généralement double citation «)

Voici les détails: http://en.wikipedia.org/wiki/Comma-separated_values

Sur la regex:

Ce code fonctionne pour vos données d'échantillon (mais seulement permet une virgule, essentiellement des milliers jusqu'à nombres séparés 999999):

string ResultString = null; 
try { 
    ResultString = Regex.Replace(myString, "([0-9]{1,3})(?:(,)?([0-9]{3})?)", "$1$3"); 
} catch (ArgumentException ex) { 
    // Syntax error in the regular expression 
} 

Cela prend ceci:

Test 12,205 26,000 Test. Et le genre des valeurs que je suis en train de faire correspondre serait 2700, 2650 et 2600 à "2700", "2650", "2.600"

et produit ceci:

Test 12205 26000 Test. Et le genre des valeurs que je suis en train de faire correspondre serait 2700 2650 et 2600 dans « 2700 », « 2650 », « 2600 »

Questions connexes