Cela devrait fonctionner pour vous:
^\{[^ ,]+(, [^ ,]+)*\}$
En supposant que votre liste contient au moins un élément et chaque élément est suivi d'une virgule et un espace (« »). Si vous souhaitez que chaque élément soit suivi d'une virgule, utilisez la solution jjnguy's.
Voilà ma tentative d'explication à ce qui se passe dans ce modèle:
- L'expression correspond à tout ce qui
[^]
n'a pas suivre le caret ^
. Donc, [^ ,]
correspondra à tout sauf pour un espace ou une virgule.
+
signifie "faire correspondre l'élément précédent 1 fois ou plus". Donc, [^ ,]+
correspondra à n'importe quelle séquence de caractères qui ne contient pas une virgule ou un espace.
*
signifie «correspondre à la précédente 0 fois ou plus». Ainsi, (, [^ ,]+)*
correspondra à 0 ou plusieurs occurrences du modèle , [^ ,]+
- une séquence commençant par une virgule et un espace, suivie d'une séquence d'au moins un caractère (qui ne contient aucune virgule ni aucun espace).
- Le fait de tout emballer dans
^\{
et \}$
garantit que la ficelle commence par une entretoise gauche et se termine par une entretoise droite.
Voir this page pour une "feuille de triche" utile sur les expressions régulières.
Quels sont les caractères autorisés dans 'anystring'? – MerickOWA