2011-11-13 4 views
0

나는 많은 다른 형식의 입력 문자열을 가지고 있으며 입력 문자열을 3 개의 섹션으로 분할해야합니다. 아래의 몇 가지 예 (몇 가지 가능성이 있기는하지만)영숫자 문자열을 3 개의 섹션으로 분할하는 정규식?

1A1 = 1, A, 1

123AA44 = 123, AA 44

AA44 = 빈, AA 44

44AA = 44, AA,이 섹션에 대한 빈

추가 제약 :

  • 1 절에있다 LY의 숫자와 긴 1 ~ 4 자입니다
  • 두번째 섹션은 알파이며
  • 3 절은 숫자 또는 영숫자가 될 수 1-3 자이고

I 1-4 자입니다 아래 코드로 정규 표현식 지식의 끝에 도달했습니다. 3 개의 섹션 중 하나가 입력에 비어있는 경우를 제외하고는 모든 시나리오에서 작동합니다. 도움이 필요해! 감사.

Regex regex = new Regex("(?<Section1>[0-9]{1,4})(?<Section2>[a-zA-Z]{1,3})(?<Section3>[0-9a-zA-Z]{1,4})"); 
Match match = regex.Match(inputString); 

string 1 = match.Groups["Section1"].Value; 
string 2 = match.Groups["Section2"].Value; 
string 3 = match.Groups["Section3"].Value; 
+0

어떻게 당신이 제 3 섹션에서 2 위를 구별 할 숫자로 시작하는 제 3 섹션에 규칙을 추가? 세 번째 섹션은 항상 문자로 시작합니까? – pauloya

+0

두 번째 섹션은 항상 문자로 끝나고 세 번째 섹션은 항상 숫자로 시작합니다 – Borophyll

답변

2

시도해 보셨습니까?

Regex regex = new Regex("(?<Section1>[0-9]{0,4})(?<Section2>[a-zA-Z]{0,3})(?<Section3>[0-9a-zA-Z]{1,4})"); 
+0

하하는 단순하지만 트릭을 수행했습니다. 고맙습니다! – Borophyll

+0

그래, 그건 더 이해가 돼! 마지막 섹션에서 방금 0을 놓 쳤습니다. – pauloya

0

각 섹션에 선택 사항을 추가하는 것으로 충분합니다.
그리고

Regex regex = new Regex("(?<Section1>[0-9]{1,4})?(?<Section2>[a-zA-Z]{1,3})?(?<Section3>[0-9][0-9a-zA-Z]{0,3})?"); 
관련 문제