2011-02-23 3 views
0

패턴 c를, 특수 문자와 일치하는 정규 표현식을 사용하는 동안 작동하지 않는 것은 모든 문자는 제외하고 작동은 '-' '-'#

Regex splRegExp = new System.Text.RegularExpressions.Regex(@"[\,@,+,\,?,\d,%,.,?,*,&,^,$,(,!,),#,-,_]"); 

입니다. 제발 조언.

+0

왜 모든 쉼표가 사용됩니까? 그들은 구분자가 아닌 "표준"문자로 취급되기 때문에 "일치"('[,]'는','와 일치합니다)합니다. 그리고'\'는 다음 문자를 이스케이프 처리합니다. – xanatos

답변

4

사용

@"[,@+\\?\d%.*&^$(!)#_-]" 

필요가 없습니다를 들어 :

Regex splRegExp = new System.Text.RegularExpressions.Regex(@"[-,\,@,+,\,?,\d,%,.,?,*,&,^,$,(,!,),#,_]"); 
+0

나는 그 캐릭터 그룹에','가 있고 그 범위', - '가 다소 작다고 말할 수있는 가장 좋은 방법을 찾으려고 노력했지만, 적절하게 요약 해 놓은 것처럼 보입니다. –

1

'-'는 정규 표현식의 첫 번째 문자이어야합니다.

"[\,@,+,\,?,\d,%,.,?,*,&,^,$,(,!,),#,\-,_]" 
+0

또는'-'로'-'를 "벗어날"수 있습니다. – xanatos

+0

아니요, 그렇지 않습니다. @Tim Pietzcker의 대답을 참조하십시오. –

0

는이 시도가 (이 정규 표현식 구문의)

을 작동하려면 - CHARACTER을 탈출해야합니다 모든 쉼표.

character class 안에 -을두면 클래스 시작 또는 끝 부분에있는 경우에만 리터럴 대시를 의미합니다. 그렇지 않으면 A-Z과 같은 범위를 나타냅니다. Damien이 말했듯이, 범위 ,-,은 실제로 다소 작습니다 (물론 -을 포함하지 않습니다).