2009-12-17 3 views
1

내가 .NET에서 하나의 정규식으로 로그 파일을 구문 분석의 feasability 주위에 내 머리를 정리하려고은이 로그 형식을 구문 분석하는 단일 RegEx?

은 무엇 어렵게된다

로그 파일이 해당 할 수있는 항목이 있습니다 스팬 여러 (항상은 아니지만을) 각 로그 파일에는 실제로 여러 '로그'가 포함될 수 있습니다. 예 형식 : 여기

 
log: 
    event 1 
    event 2 
    additional information 
    event 3 
log: 
    event 1 
    additional information 
    more additional information 
    event 2 
    additional information 

필요성하는 로그에 속하고 또한 캡처위한 추가적인 정보를 가지고 이벤트를 구별 할 수있는. 물론 이벤트를 잡을 수있었습니다 ... 로그를 통해 캡처로 그룹화하는 것 외에 추가 정보를 사용하여 이벤트를 가져올 수 없었습니다.

솔루션을 건네기보다는 정보를 주셔서 감사하겠습니다. 그래서 나는 배울 수있다. 내 질문은 짐작할 수 있겠 니? 이미 다른 방법을 발견하려고 시도한 파서로 이미 완성되었습니다.

+1

정규식에서는 거의 모든 텍스트 기반이 가능하지만 좋은 생각은 아닙니다.이 경우 구문 분석이 더 효과적 일 수 있습니다. 입력/출력 예제를 제공 할 수 있습니까? –

+0

너무 늦기 전에 자신을 저장하지 않으려면 regex를 사용하지 마십시오! http://www.codinghorror.com/blog/archives/001016.html –

답변

2

왜 이것을 하나의 정규식으로 사용하려고합니까? 적절한 파서를 사용하십시오.

정규 표현식은 간단한 문자열 조작에 아주 좋습니다만, 일단 복잡한 구문을 사용하면 실제 파서가 훨씬 좋습니다.

+0

순수한 호기심/도전. 파서 자체는 이미 완료되었습니다. – Doug

+0

빠른 예제 (형식이 게시 된 것으로 가정),/\ n [^ \ n] * (\ n [^ \ *] * /'* 추가 콘텐츠 라인 수. –

+0

공간이 압축 된 것처럼 보입니다. 내가 무슨 뜻인지 알거야. –

2

RegEx에서 수동으로 구문 분석하는 것이 더 쉽고 더 투명 해 보입니다. 패턴은 매우 간단합니다.

+0

예, 동의하는 경향이 있습니다. Regex는 중첩 된 항목과 다중 행으로 인해 더 어려워집니다. –

0

패턴을 사용하여 각 로그 항목을 개별적으로 추출 할 수 있지만 동일한 패턴의 캡처를 사용하여 정보 그룹으로 분할하는 것은 불가능합니다.

당신이해야 할 일은 정보 라인 (기본적으로 줄의 끝 부분에 공백이 오는 공간)에 대한 패턴을 만들고 그것을 반복하는 것입니다.

관련 문제