2010-06-11 2 views
1

Я пытаюсь вырезать все вещи, которые находятся в строке, которые не число буква или пробел, поэтому я создал регулярное выражениеRegex картина не суметь

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

Однако когда я называю _NonAlphaChars.Replace("Scott,", ""); возвращает "Scott,"

Что я делаю неправильно, что он не соответствует ,?

+0

Проблема заключается в том, что вы не можете вкладывать классы персонажей, как это. Так что регулярное выражение, которое вы на самом деле анализировали как: любой символ в отрицательном наборе '[^ [A-Za-z0-9]' (где второй '[' фактически является частью класса), за которым следует один '' ' – Johrn

ответ

4

Вы сделали что-то смешное с двойным брекетинг. Изменить это просто

[^A-Za-z0-9 ] 

капают исходное выражение в The Regex Coach объяснил свой регулярное выражение как:

Регулярное выражение представляет собой последовательность, состоящую из выражения «[[^ A-Za-z0-9] 'и символ'] '.

Для контраста, объяснение альтернативы я написал это:

Регулярное выражение представляет собой символьный класс, представляющий все, кроме диапазона символов из символов «А» до символа «Z» , диапазон символов от символа 'a' до символа 'z', диапазон символов от символа '0' до символа '9' и символ ''.

+0

Спасибо за ссылку на The Regex Coach! Я всегда старался проводить исследования на www.regular-expressions.info, чтобы выяснить мои выражения. –

5
private static Regex _NonAlphaChars = 
    new Regex("[^A-Za-z0-9 ]", RegexOptions.Compiled); 
Смежные вопросы