2012-02-08 2 views
1

정규 표현식에서 특정 일치 항목을 무시할 수 있습니까? 예를 들어정규 표현식에서 일치 항목 제외

:

나는 다음과 같은 정규 표현식을 가지고 :

^[0-9]{2}$ 

하지만, 특정 문자열과 일치의이 "12"을 가정 해 봅시다 싶지 않아요.

정규 표현식에 대해 연산자를 찾고 있지만 .NET/C#에서 이와 같은 것을 찾을 수 없었습니다.

정규식 자체에서 이렇게하는 것이 좋습니다. 조언이나 제안이 있으십니까?

답변

4
^[0-9]{2}(?<!12)$ 

또는 반대를 사용하지시기를 아는 것이 중요합니다 :

^(?!12)[0-9]{2}$ 

특정의 경우 특정 일치 항목 1 부 쉬웠다. 때로는 불가능할 때가 있습니다. 가끔은 불가능합니다. 정규 표현식에 의존합니다.

+0

우수한! 이걸 어떻게 부르는거야? 나는 그것에 관하여 더 많은 것을 읽고 싶다 ... :) – Meryovi

+0

[부정적인 lookbehind & lookaheads @ regularexpressions.info] (http://www.regular-expressions.info/lookaround.html) – Wrikken

+0

감사합니다! 이것은 매우 유용 할 수 있습니다. – Meryovi

1

당신은 같은 일을 더 낫다 :

if (Regex.IsMatch(MyString, @"^[0-9]{2}$") && MyString != "12") 
{ 
    // Do something 
} 

정규식은 매우 강력하다, 그러나 그들 :)

+0

문자열입니다. ;) – m0skit0

+0

@JOE : 나는 동의한다. 그러나이 경우 Wrikken 대답은 간단하다. 당신은 lookaround를 알고있다. –

+0

Regexps가 DB에 저장되고 동적으로 평가되기 때문에이 경우에는 쉽지 않을 것이다 ... – Meryovi

1

당신은이 추악한 정규 표현식 사용할 수 있습니다

^([02-9][0-9] | [1][013-9])$ 

일반 영어 번역을, 그것은 "1 시작되지 않는 두 자리 문자열 또는 1에서 시작하지만 않는 두 자리 문자열을 의미한다 두 번째 숫자가 2이 아닙니다. "

관련 문제