2012-05-21 2 views
0

특정 문자열을 일치시키기 위해 C# Regular Expression을 사용하려고하지만 어떻게해야하는지 알 수 없습니다. 어떤 도움을 주셔서 감사합니다.C# 조건부 정규식 문자열 일치

나는 A는 대문자 알파 문자이고, 다음과 일치하도록 노력하고 문자열, X는 대문자 영숫자 문자와 # 0, 1 또는 2

AA-#-XX-X-XXX-XXXXXXX-XXXXXXXX

입니다

그래서 다음 중 하나가 위의 문자열과 일치합니다. VV-2-XX-7-CCC-ABCDEFG-12345678

MM-0-AB-1-ABC-1234567

MM-0-AB

XY-1

는 다음에 해당하는 경우에는 다음 중 하나가 일치하지 않습니다.

QQ-7-AA (만 0, 1, 2 번째 레벨에서 사용할 수 있습니다.)

QQ-2-XX-7-CC (일부 문자를 그 수준.)

QQ-2-XX-7-CCC-ABCDEFG-는 (대시에 끝낼 수 없습니다.)

QQ-2-XX-7-CCC-ABCDEFG-123456 (그 수준에 대한 부분 자.)

지금까지 (아니 그렇게 멀리 정말로) 내가 @"^[A-Z]{2}" 일치하는 패턴으로,하지만 내가 공조와 일치하는 방법을 확실하지 오전 nally (조건부로 사용하는 것이 적절한 용어인지는 모르겠다) 문자열의 나머지 부분이 있지만 거기에있는 경우에만. 이것을 위해 7 가지 진술을 써야합니까? 불합리한 것 같지만 잘못 될 수 있습니다.

답변

9

Regular Expression Language을 살펴보십시오.

  • 대문자 알파 문자 : [A-Z]
  • 대문자 영숫자 문자 : [A-Z0-9]
  • 0, 1 또는 2 : [0-2]
  • 대시 : -

  • 당신은 다음과 같은 요소가 필요합니다 일치 x 정확히 n 번 : x{n}

  • 경기 X 0 또는 1 시간 : x?
  • 는 표현식 정의 : (을 ...대시 하였다 [A-Z]{2}-
  • 개의 대문자 알파벳 문자, : 대시 하였다 [A-Z]{2}
  • 개의 대문자 알파벳 문자 : )

예 :

  • 개의 대문자 알파벳 문자 뒤에 0, 1 또는 2가옵니다. [A-Z]{2}-[0-2]
  • 두 개의 대문자 알파. 0, 1 또는 2,이어서 대시 하였다 있지만 표현식 대시 0 이루어진으로 1 또는 2가 0 또는 1 시간 발생 : 등등
    [A-Z]{2}(-[0-2])?
  • 및 ...

결과로 표현 : 매우 철저한 답변

^[A-Z]{2}(-[0-2](-[A-Z0-9]{2}(-[A-Z0-9](-[A-Z0-9]{3}(-[A-Z0-9]{7}(-[A-Z0-9]{8})?)?)?)?)?)?$ 
+0

+1. – devstruck

+0

나는 너무 가까이에 있었지만 나를 때렸다. 훌륭하고 잘 설명 된 대답! +1 –

+0

나는 너무 느렸다. A-Z0-9를 줄이는 방법이 있다고 생각했는데 (0-9의 경우 "\ d"를 사용하는 것과 같음), 찾을 수는 없습니다. 가장 가까운 것은 "\ w"이었지만 너무 많은 문자가 포함되어 있습니다. –