2012-08-29 13 views
12

Dosya adlarını temizlemem gerekiyor. Yani bu kodu vardır:Herhangi bir sözcük olmayan karakteri eşleştirmek için Normal, ancak eksi

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

Bu iyi çalışır, ama şimdi eksi kaldırmak istemiyorum (-), bu yüzden bu sağlamak için normal ifadeler değiştirildi:

[\W_^-]+ 

Ama bunu yapar çalışmıyor Ne kaçırdım?

+1

, üzerindeki özel anlamını yitirir. Ve düzgün bir şekilde kullandığınızda, karakter sınıfındaki her şeyi geçersiz kılar. Bunun yerine ['[^ a-zA-Z0-9-] +'] (http://rubular.com/r/onJOpL9Fwk) kullanın. – NullUserException

+0

Teşekkürler. Bu işe yarıyor. Birinin basit bir şey yapabildiğini sanıyordum ama sanırım değil. Yorumunuzu cevap olarak eklerseniz, onaylayabilirim. – Remy

cevap

16

bu normal ifadeyi kullanmayı deneyin:

[^\w-]+ 

Düzenleme:

doğru düzenli ifade olduğunu görünüyor:

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

Bunun kısmen yanlış olduğuna inanıyorum çünkü alt çizgi ile uyuşmuyor. – NullUserException

+0

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

+1

Doğru'ya eşittir, bu nedenle, \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\. – NullUserException

2

Sadece içinde Bunu yapmazsanız ne istediğini ve neyi verting: Başından dışında başka yerde bir karakter sınıfında şapka (`^`) kullanırsanız

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

RegexPal link for this.

İlgili konular