2011-03-01 5 views
31

단순한 정규식이어야하는 벽에 머리를 부딪 히고 있습니다. 일치해야합니다 (예 : 12po). 12 부분은 하나 또는 두 자릿수이면 :.-,_ 등의 영숫자가 아닌 선택 사항이며 그 다음 문자열은 po입니다.1 자리 또는 2 자리에 대한 정규식, 영숫자가 아닌 2 자, 2 개의 알려진 알파

궁극적으로는 C#에 사용 하겠지만 명령 줄에서도 마찬가지로 grep으로 작업하고 싶습니다. C#에 액세스 할 수 없으므로 도움이되지 않습니다.

답변

3
^[0-9][0-9]?[^A-Za-z0-9]?po$ 

당신은 여기를 테스트 할 수 있습니다, http://www.regextester.com/

는 C#에서이를 사용하려면

Regex r = new Regex(@"^[0-9][0-9]?[^A-Za-z0-9]?po$"); 
if (r.Match(someText).Success) { 
    //Do Something 
} 

기억 @ 파서는 말 그대로 문자열을 사용을 의미하는 유용한 상징이다 (예를 들어, 당신 하나의 백 슬래시에 \\을 쓸 필요가 없음)

45
^[0-9]{1,2}[:.,-]?po$ 

다른 허용 가능한 비 알파 숫자를 중간 괄호로 묶어 해석 할 수도 있습니다.

+1

...하지만 '-' 앞에 추가하면 놀라운 결과를 얻을 수 있습니다. –

18
^\d{1,2}[\W_]?po$ 

\d 숫자를 정의 {1,2} 1 또는 식의 두 전에 \W 비 단어 문자를 정의하는 것을 의미한다.

+0

\ W에 _이 (가) 포함되어 있지 않습니다. –

+0

이 맞습니다. [\ W | _] – stema

+0

으로 수정되었습니다. [[\ W_]] (으)로 수정되었습니다. –

관련 문제