Regex pour trouver des virgules et non à l'intérieur des guillemets
déteste le dire, mais chaque thread avec cette question ne m'aide pas.
Je suis de vérifier ligne par ligne en C#
de données, par exemple:
bob jones,123,55.6,,,"Hello , World",,0
jim neighbor,432,66.5,,,Andy "Blank,,1
john smith,555,77.4,,,Some value,,2
Regex pour ramasser des virgules à l'extérieur des guillemets ne permet pas de résoudre la deuxième ligne, c'est le plus proche.
Si vous êtes à l'aide de C#, alors pourquoi s'embêter avec une regex? Beaucoup plus facile d'utiliser une base de boucle.
grâce JDB, j'ai besoin d'une regex
Ne pas utiliser les regex. Vous avez besoin d'un CSV de l'analyseur.
avec tout le respect que ce qui est si difficile à comprendre d'un simple contrainte, sans avoir à l'expliquer. Je reçois le "csv parser" Pas une option, s'il vous plaît dites-moi que vous n'avez jamais rencontré de semblables
grâce JDB, j'ai besoin d'une regex
Ne pas utiliser les regex. Vous avez besoin d'un CSV de l'analyseur.
avec tout le respect que ce qui est si difficile à comprendre d'un simple contrainte, sans avoir à l'expliquer. Je reçois le "csv parser" Pas une option, s'il vous plaît dites-moi que vous n'avez jamais rencontré de semblables
OriginalL'auteur Chris Hayes | 2014-01-14
Vous devez vous connecter pour publier un commentaire.
Prendre du recul et à être surpris!
Voici la regex que vous cherchez:
(?!\B"[^"]*),(?![^"]*"\B)
Voici une démonstration:
regex101 démo
"
que vous avez inséré n'est pas un guillemet de fermeture.,r"a string",10
parce que la lettre sur le bord de la"
permettra de créer une frontière de mot, plutôt qu'un non-mot.Version Alternative
(".*?,.*?"|.*?(?:,|$))
Cela permettra d'adapter le contenu et les virgules et est compatible avec les valeurs qui sont plein de signes de ponctuation
regex101 démo
ne fonctionne pas avec la ligne de ponctuations ie points d'interrogation, les périodes
Où sont les signes de ponctuation situé dans la chaîne comme un exemple?
Je les ai mis dans une autre version, j'espère que ça fonctionne avec votre code... si non, nous allons venir avec quelque chose d'autre.
Trouvé une meilleure solution de travail ici
OriginalL'auteur Vasili Syrakis
Ci-dessous la regex est pour l'analyse de chacun des champs dans une ligne, pas la totalité d'une ligne
Appliquer les méthodique et désespérée regex technique: Diviser pour régner
Cas: le champ ne contient pas de citer
[^,"]*(,|$)
Cas: champ contient exactement deux citations
[^,"]*"[^"]*"[^,"]*(,|$)
Cas: champ contient exactement un devis
[^,"]*"[^,"]$
[^,"]*"[^"],(?!.*")
Maintenant que nous avons tous les cas, nous avons ensuite '|' tout ensemble et profiter de la résultante de la monstruosité.
OriginalL'auteur twj
essayer ce modèle
".*?"(*SKIP)(*FAIL)|,
Démo(*SKIP)
un(*FAIL)
ne sont pas valides .NET.OriginalL'auteur alpha bravo
OriginalL'auteur Nithin
La meilleure réponse écrite par Vassili Syrakis ne fonctionne pas avec les nombres négatifs à l'intérieur des guillemets comme:
Suivantes regex fonctionne dans ce but:
Mais je n'ai pas été couronnée de succès avec cette partie de l'entrée:
OriginalL'auteur kitnarf