Est-il possible de définir une regex qui va correspondre à tous les caractères sauf un certain caractère défini ou un ensemble de caractères? Fondamentalement, je voulais séparer une chaîne par une virgule (,) ou un point-virgule (;). Donc je pensais le faire avec une regex qui correspondrait à tout jusqu'à ce qu'il rencontre une virgule ou un point-virgule.Quelle regex correspondra à tous les caractères sauf la virgule ',' ou le point-virgule ';'?
Répondre
[^,;]+
Vous n'avez pas spécifié l'implémentation d'expressions régulières que vous utilisez. La plupart d'entre eux ont une méthode Split
qui prend des séparateurs et les divise. Vous pouvez utiliser celui-là avec un « normal » (sans ^
) classe de caractères:
[,;]+
Utiliser des classes de caractères. Une classe de caractères commençant par caret correspond à tout ce qui n'est pas dans la classe.
[^,;]
En savoir plus sur les [classes de caractères nuls] (http://www.regular-expressions.info/charclass.html) – HEX
Utilisez ceci:
([^,;]*[,;])*
Cela nécessite la virgule ou le point-virgule comme un délimiteur de champ, plutôt que comme un séparateur de champ. La différence est importante à la fin d'une «ligne» (ou d'une autre structure d'enregistrement numérisée); généralement, vous ne voulez pas insister sur une virgule ou un point-virgule après le dernier champ. Si votre moteur regex est assez puissant, vous pouvez utiliser ''(?: ([^ ,;] *) (?: [^ ,;] | $))'' (PCRE avec parenthèses non-capturantes). Les alternatives d'une virgule ou un point-virgule après le champ, ou la fin de l'enregistrement, rend les choses fonctionnent mieux. Vérifiez également si les champs vides sont autorisés. –
Enfin, vous devez vous soucier de ce qui est réellement retourné par les captures - voulez-vous vraiment que les séparateurs soient inclus, et s'il y a 10 champs sur une ligne, combien d'entre eux sont renvoyés par la notation de capture. –
Vous avez raison à propos de tout cela, mais la raison pour laquelle je n'ai pas concerté ces choses dans ma réponse est que je ne sais pas quelle langue/bibliothèque de RegEx l'interrogateur demande. Il utilise peut-être "GREP". De toute façon, je vous remercie d'avoir ajouté ces commentaires pour clarifier les choses pour lui. :RÉ – NawaMan
utiliser un negative character class:
[^,;]+
- 1. Comment gérer tous les caractères ASCII (y compris les caractères spéciaux regex) dans une regex Perl?
- 2. Expression régulière incluant tous les caractères du clavier sauf '~' et ','
- 3. Comment puis-je supprimer tous les caractères autres que les mots, sauf le saut de ligne?
- 4. Quelle est la version la plus compacte de "faire correspondre tout sauf ces chaînes" dans le shell ou regex?
- 5. Quelle est la machine virtuelle Java la plus légère de tous les temps? (sauf KVM)
- 6. RegEx en php pour "virgule, espace ou un par ligne"?
- 7. Appliquer des marges à tous sauf iframe
- 8. regex pour la recherche et le remplacement
- 9. BASH copier tous les fichiers sauf un
- 10. Comment supprimer tous les caractères d'une chaîne
- 11. Regex pour correspondre à tous sauf une chaîne entre guillemets dans C#
- 12. Regex pour faire correspondre "tout sauf" une chaîne
- 13. MySQL obtenir tous sauf si
- 14. F4V Player fonctionne sur tous les sites sauf un
- 15. Vous voulez rediriger tous les visiteurs sauf moi
- 16. MySQL - marquer tous sauf 1 ligne correspondante
- 17. Java regex pour correspondre à "t" sauf quand il est "[t" ou "t]"
- 18. Supprimer les signes de ponctuation sauf l'apostrophe Regex
- 19. Comment masquer tous les éléments sauf un en utilisant jquery?
- 20. Regex Exclure caractères Groupe
- 21. Utilisation de DbConnection.GetSchema() pour récupérer tous les dbs système sauf
- 22. La fenêtre jqmodal se ferme sur le formulaire soumis pour tous les navigateurs sauf FF
- 23. Mod_Rewrite Forcer HTTP sur tous les fichiers sauf un
- 24. Supprimer les caractères en utilisant Regex
- 25. Apache: Bloquer tous les répertoires, sauf pour ceux énumérés
- 26. Excel Remplacer tous les caractères trouvés
- 27. La comparaison des valeurs à virgule flottante
- 28. Comment obtenir tous les résultats de regex?
- 29. Comment supprimer tous les n-ième caractères dans le fichier (par lot ou vbs)?
- 30. Comment puis-je supprimer tous les jetons avec des caractères non-mots en Perl?
Et la question ne précise pas si les séparateurs adjacents sont autorisés, de sorte que la fuite '+' est un peu douteux. –
Obtention d'une erreur uniquement pour l'expression rationnelle point-virgule- non terminée rencontre la fin du fichier – Jaswinder