2010-06-11 7 views
1

Je suis en train de dépouiller toutes les choses qui sont dans une chaîne qui ne sont pas un numéro de lettre ou de l'espace, donc je créé le mais regexmodèle Regex ne

private static Regex _NonAlphaChars = new Regex("[^[A-Za-z0-9 ]]", RegexOptions.Compiled); 

Quand j'appelle _NonAlphaChars.Replace("Scott,", ""); retourne "Scott,"

Qu'est-ce que je fais mal qu'il ne correspond pas à ,?

+0

Le problème est que vous ne pouvez pas imbriquer classes de personnages comme ça. Donc, cette expression rationnelle vous est réellement analysée comme: n'importe quel caractère dans l'ensemble annulé '[[[-Za-z0-9]' (où le second '[' fait partie de la classe) suivi d'un seul ']' – Johrn

Répondre

4

Vous avez fait quelque chose de drôle avec le double bracketing. Changer juste

[^A-Za-z0-9 ] 

Dropping expression originale en The Regex Coach expliqué votre regex comme:

L'expression régulière est une séquence composée de l'expression « [[^ A-Za-z0-9] 'et le personnage'] '.

Pour le contraste, l'explication de l'alternative que j'ai écrit est:

L'expression régulière est une classe de caractères représentant tout, mais la gamme de caractères du caractère « A » au caractère « Z » , la plage de caractères du caractère 'a' au caractère 'z', la plage de caractères du caractère '0' au caractère '9' et le caractère ''.

+0

Merci pour le lien vers The Regex Coach! J'ai toujours essayé de faire des recherches sur www.regular-expressions.info pour trouver mes expressions. –

5
private static Regex _NonAlphaChars = 
    new Regex("[^A-Za-z0-9 ]", RegexOptions.Compiled); 
0

Essayez cette

[^A-Za-z0-9\s] 

ou

\ W

Questions connexes