C#을 사용하여 채팅에서 로그 파일을 구문 분석하려고하는데, 실행중인 문제는 표준 구분 기호를 사용하지 않으므로 구문 분석을 위해 실제로 설계되지 않았기 때문입니다. . 날짜 및 시간은 날짜 시간 유형여러 구분 기호 유형을 사용하여 필드에 텍스트 파일 구문 분석
은 messageType
는 userName
로 가입 :2010-08-09 02:07:54 [Message] Skylar Morris -> (ATL)City Waterfront: I'll be right back
date time messageType userName -> roomName: message
내가 저장하고 싶은 분야는 다음과 같습니다 파일에서 전형적인 라인의 예
roomName
메시지
공백, 탭 또는 쉼표와 같은 표준 구분 기호로 분리 할 수 있다면 상당히 간단 할 것입니다. 그러나 나는 이것을 공격하는 방법을 놓치고 있습니다.
같은 템플릿으로이 코드를 사용하여, 후속 :
List<String> fileContents = new List<String>();
string input = @"2010-08-09 02:07:54 [Message] Skylar Morris -> (ATL)City Waterfront: I'll be right back";
string pattern = @"(.*)\[(.*)\](.*)->(.+?):(.*)";
foreach (string result in Regex.Split(input, pattern))
{
fileContents.Add(result.Trim());
}
을 나는 7 개 요소 것으로 예상되는 5 (전후 한 빈)을 얻고있다. 이 문제를 어떻게 해결할 수 있습니까?
foreach (string result in Regex.Split(input, pattern)
**.Where(result => !string.IsNullOrEmpty(result))**)
{
fileContents.Add(result.Trim());
}
좋아요, 위 코드로 해결할 수 있습니다.
나는 정규 표현식이 답이 될 거라 생각했는데, 경험이 거의없는 부분 일 뿐이다. 나는 그것을 시도하고 다시보고 할 것이다. – Chris
학습하고 실험하기 위해 시간을 할애하고 싶다면 http://gskinner.com/RegExr/을 참조하십시오. 더 나은 도구가 있지만 사용하는 OS가 무엇인지 알 수 없습니다. 또한 위의 표현식이이를 사용하기 때문에 '그룹'이 정규 표현식에 포함되어 있는지 확인하는 것이 좋습니다. 그러면 그 표현식을 사용하는 방법을 알아야합니다. –
리눅스 (우분투 구체적으로) – Chris