2010-12-16 7 views
17

Ich bin auf der Suche nach einem regulären Ausdruck, der ungültige Zeichen entfernt. Aber ich weiß nicht, was die Charaktere sein werden.Ersetzen Zeichen, wenn nicht übereinstimmen

Zum Beispiel:

In einem Prozess, möchte ich meinen String ([a-zA-Z0-9/-]*) übereinstimmen. Ich möchte also alle Zeichen ersetzen, die nicht übereinstimmen der oben genannten Regexp.

+0

Mögliches Duplikat von http://stackoverflow.com/questions/3847294/replace-all-characters-not-in-range-java-string –

Antwort

33

Das wäre:

[^a-zA-Z0-9/-]+ 

[^ ] am Anfang einer Zeichenklasse negiert es - sie paßt Zeichen in der Klasse nicht.

Siehe auch: Character Classes

0

Dank Kobi ‚s Antwort, die ich eine helper method to strips unaccepted characters erstellt haben.

Das zulässige Muster sollte im Regex-Format sein, erwarten Sie, dass sie in eckigen Klammern eingeschlossen sind. Eine Funktion fügt nach dem Öffnen der Squere-Klammer eine Tilde ein. Ich gehe davon aus, dass es nicht für alle RegEx funktioniert, die gültige Zeichensätze beschreiben, aber es funktioniert für relativ einfache Sets, die wir verwenden.

   /// <summary> 
       /// Replaces not expected characters. 
       /// </summary> 
       /// <param name="text"> The text.</param> 
       /// <param name="allowedPattern"> The allowed pattern in Regex format, expect them wrapped in brackets</param> 
       /// <param name="replacement"> The replacement.</param> 
       /// <returns></returns> 
       /// //  https://stackoverflow.com/questions/4460290/replace-chars-if-not-match. 
       //https://stackoverflow.com/questions/6154426/replace-remove-characters-that-do-not-match-the-regular-expression-net 
       //[^ ] at the start of a character class negates it - it matches characters not in the class. 
       //Replace/Remove characters that do not match the Regular Expression 
       static public string ReplaceNotExpectedCharacters(this string text, string allowedPattern,string replacement) 
       { 
        allowedPattern = allowedPattern.StripBrackets("[", "]"); 
         //[^ ] at the start of a character class negates it - it matches characters not in the class. 
         var result = Regex.Replace(text, @"[^" + allowedPattern + "]", replacement); 
         return result; //returns result free of negated chars 
       } 
Verwandte Themen