2014-04-22 4 views
0

John Doe 12/01/1950, John * Doe 12/01/1950, John 12/01/1950, 12/01/1950 John12/01/1950 John * Doe과 같은 패턴을 C#을 사용하여 분할하려고합니다. 예상되는 결과는문자열과 날짜를 구분하는 정규식

+0

당신은 당신의 문제를 해결하기 위해 _anything_을 시도 했습니까? –

+0

@ SonerGönül 그는 스택 오버플로에 게시했습니다 :) – Bogdan

+0

completfully 정직하게, 아직 ... 이것은 지금 나와 6 일 기한이 지났습니다 ... 그리고 나는 정규식을 만드는 방법을 모릅니다 ... 비록 주위를 둘러보기 시작 해요. – Leonardo

답변

2

일치 슬래시 다음에, 하나 이상의 숫자입니다

(\d+/){2}\d+ 

와 날짜, 두 번, 다음 반복 ... 하나 개의 문자열에 날짜와 다른의 나머지입니다 하나 이상의 숫자. 당신은 그들이 넣어 얼마나 많은 숫자에 대해 구체적으로 원한다면, 당신은 단어 문자 "단어 공간 별을 의미한다 (\ w를)

(\w+ +\* +\w+)|(\w+ +\w+)|(\w+) 

를 검색하여

\d\d/\d\d/\d\d\d\d 

우리는 이름을 일치시킬 수 있습니다 사용할 수 있습니다 공백 단어 "또는"단어 공백 단어 "또는"단어 "가됩니다.

1

당신은 다음과 같이 수행 할 수 있습니다

string[] lines = new[] { 
    "John Doe 12/01/1950", 
    "John * Doe 12/01/1950", 
    "John 12/01/1950", 
    "12/01/1950 John", 
    "12/01/1950 John * Doe" }; 
foreach (string line in lines) 
{ 
    Match m = Regex.Match(line, @"(?<name1>.*?)\s?(?<date>\d\d/\d\d/\d{4})\s?(?<name2>.*)"); 
    string date = m.Groups["date"].Value; 
    string name = m.Groups["name1"].Value + m.Groups["name2"].Value; 
    Console.WriteLine("{0} - {1}", date, name); 
} 
관련 문제