2011-10-08 2 views
0

을 무시하고, 문자열에 비 단어를 문자를 대체 [] 또는 _이 아닌 영숫자가 아닌 문자를 제거합니다. 나는이정규식 내가 문자열에서 모든 영숫자가 아닌 문자를 제거 다음 줄을 가지고 특정 문자 VB.net에서

비 단어 나 [나] 또는 _ 교체 말한다 확신하지만

return Regex.Replace(build, "[\W\[\]_]", "") 

:

나는에 라인을 변경했습니다 [] 및 _ chars에 대한 테스트를 무효화하려면 어떻게해야합니까?

replace non-word and not [ and not ] and not _ 

몇 가지 예 :

"[Foo Bar_123456]" => "[FooBar_123456]" 
"[Foo Bar_123-456*]" => "[FooBar_123456]" 

(필요한 경우 더 공급 될 수있다)

답변

1

당신은 character set subtraction를 사용할 수 있습니다

[\W-[_\[\]]] 

즉. \W_, []이 제거되었습니다 (두 번째 문자 세트는 문자 세트의 메타 문자이므로 이스케이프가 필요합니다). "("_ "포함)

[^\w\[\]] 

그것은 숫자를 제외한 경기 (다음 대체) 모든 말한다 :

var re = new Regex(@"[\W-[_\[\]]]"); 
+0

알 수 있습니다. 패턴은 다음과 같아야합니다 :'[\ W - [\ _ \ [\]]]'? –

+0

@JonEgerton 죄송합니다. 백 슬래시로 도망갔습니다 :-). – Richard

+1

'[\ W - [] []]'도 작동합니다. ']'는 여는 후에 첫 문자가 이스케이프 될 필요가 없습니다'['또는'[^'; '''는'-' 다음에 나오지 않으면 특별하지 않습니다; '_'는'\ W'와 일치하지 않으므로리스트에 올 필요가 없습니다. –

3

이 정규식을 시도해보십시오 그대로 문자열 @"..." C#을 각 백 슬래시를 이스케이프 할 필요 피한다 [ ","] "