2012-08-29 4 views
12

파일 이름을 정리해야합니다. 그래서 나는이 코드를 가지고 :정규식이 아닌 단어가 아닌 문자는 모두 일치 시키십시오.

//\W_ is any non-word character (not [^a-zA-Z0-9_]). 
Regex regex = new Regex(@"[\W_]+"); 
return regex.Replace(source, replacement); 

이 잘 작동,하지만 지금은 마이너스를 제거하지 않습니다 (-), 그래서 나는이에 정규식 변경 :

[\W_^-]+ 

을하지만 그 않습니다 작동하지. 내가 놓친 게 무엇입니까?

+1

, 그것의 특별한 의미를 잃는다. 그리고 제대로 사용하면 문자 클래스의 모든 것을 무효화합니다. 대신 ['[^ a-zA-Z0-9-] +'] (http://rubular.com/r/onJOpL9Fwk)를 사용하십시오. – NullUserException

+0

감사. 그거야. 나는 \ W로 간단한 것을 할 수있을 것이라고 생각했지만, 그렇지 않을 것 같다. 의견을 답변으로 추가하면 승인 할 수 있습니다. – Remy

답변

16

이 정규 표현식을 사용하십시오 :

[^\w-]+ 

편집 :

오른쪽 정규 표현식 것 같다 :

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

밑줄과 일치하지 않기 때문에 부분적으로 잘못된 것 같습니다. – NullUserException

+0

\ w는 [a-zA-Z0-9_] – Oussama

+1

과 동일합니다. 따라서 '\ w'를 무효화하면 밑줄도 제외됩니다. – NullUserException

2

단지에서 당신이하지 않는 무엇을 당신이 원하는 무엇을 verting 것은 : 당신이 처음 외의 위치에 문자 클래스에 캐럿 ('^')를 사용하는 경우

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

RegexPal link for this.

관련 문제