regex pour enlever la virgule entre guillemets notepad++
Je suis en train de supprimer les virgules à l'intérieur de guillemets doubles à partir d'un fichier csv dans notepad++, c'est ce que j'ai:
1070,17,2,GN3-670,"COLLAR B, M STAY","2,606.45"
et j'ai besoin de ceci:
1070,17,2,GN3-670,"COLLAR B M STAY","2606.45"
Je suis d'essayer d'utiliser le bloc-notes rechercher/remplacer option avec un reg exp. de modèle.
J'ai essayé toutes sortes de combinaison, mais n'a pas réussi à le faire 🙁 Le fichier qui contient 1 million de lignes.
Après tout, aujourd'hui, je ne suis pas plus sûr que si une simple regex peut faire? Je devrais peut-être aller avec un script python...?
Pourrait-il y avoir plus d'une virgule entre les guillemets?
OriginalL'auteur mrki | 2014-04-21
Vous devez vous connecter pour publier un commentaire.
mrki, cela va faire ce que vous voulez (testé dans le N++):
De recherche:
("[^",]+),([^"]+")
Remplacer:
$1$2
ou\1\2
Comment cela fonctionne? La première parenthèses de capture au début de la chaîne jusqu'à (mais non compris) la virgule dans le Groupe 1. La deuxième parenthèses de capture de la fin de la chaîne de caractères après la virgule dans le Groupe 2. Le remplacement des substituts de la chaîne avec une concaténation du Groupe 1 et du Groupe 2.
Plus en détail: dans la première parenthèse, nous faisons correspondre l'ouverture des guillemets, n'importe quel nombre de caractères qui ne sont pas une virgule. C'est le sens de
[^,]+
. Dans le second, entre parenthèses, nous faisons correspondre un nombre quelconque de caractères qui ne sont pas de guillemets doubles avec[^"]+
, puis la fermeture des guillemets doubles .Pour être plus sûr, je voudrais utiliser
("[^",]+),([^"]*")
parce que les deux guillemets doubles besoin d'attention avant et après la virguleC'est probablement parce que vous devez cliquer sur le "expression Régulière" dans la case en bas à gauche de l'onglet Remplacer dans N++. 🙂
Vous devez vous l'utilisation d'expression régulière dans les options de recherche
belle capture d'écran. 🙂
OriginalL'auteur zx81
Essayez ce qui suit
Cela va supprimer les virgules entre guillemets
OriginalL'auteur Nithin
Juste une mise à jour pour @zx81 est une brillante solution.
Disons que vous avez 2commas entre guillemets
Puis la regex de recherche doit être modifié comme suit:
Remplacer doit être modifié comme
Donc à modifier en fonction du nombre de virgules.
J'ai essayé d'explorer pour voir si récursive regex était possible, mais le fait ne semble pas être possible qu'à partir de maintenant
OriginalL'auteur Anand Sunderraman