2014-05-19 1 views
0

다양한 텍스트 형식의 logcat 로그에 wireshark 해부기를 쓰려고합니다.g_regex_match_simple로 logcat 간단한 형식과 일치하는 Regexp

내가 할 일은 내가 읽고있는 logcat의 유형을 감지하고, 추출 된 존경 할만한 부분을 얻어야한다. 나는 정규식을 사용하는 것이 트릭을 할 것이라고 생각했지만 분명히 그렇지는 않다. 이 펄있는 Compatibile해야로서 내가 명령 줄에서 펄 그것을 시도하고 작동하는 것 같다

[IVDWE]/.*\(\s*[0-9]*\):\s.* 

:

여기 내 정규 표현식입니다. 그러나 라인을로드 할 때, 예.

I/bdAddrLoader( 184): option : f=/persist/bluetooth/.bdaddr 

g_regex_match_simple으로 표현 둥근 괄호를 여는 일치하지 않습니다. 1-4에서 \으로 탈출을 시도했지만 작동하지 않았습니다.

편집 : ... 나는`\ ', \을 시도하고, \\\\ 버전을하지만, 어떻게 든 \\ 놓친 것으로 밝혀

+0

하지 않음 'g_regex_match_simple'의 구분자가 어떻게 작동하는지는 알 수 있습니다.하지만, 일반적인'/'구분자를 사용한다면'/'을 사용하여'/'를 이스케이프 처리해야합니다. – Sam

+0

정규 표현식을'g_regex_new'로 먼저 컴파일 해보십시오. – hwnd

+0

@Sam : 원형 브레이스를 열 때까지 파트를 썼습니다 ('[IVDWE] /.*'). 문제는 중괄호 열림으로 시작됩니다 ... – morynicz

답변

0

그것은 두 개의 백 슬래시와 함께 나를 위해 작동 :

#include <glib.h> 

int 
main(int argc, char *argv[]) { 
    gboolean res = g_regex_match_simple ("[IVDWE]/.*\\(\\s*[0-9]*\\):\\s.*", 
             "I/bdAddrLoader( 184): option : f=/persist/bluetooth/.bdaddr", 
             0, 0); 
    g_message ("%s", res ? "true" : "false"); 

    return 0; 
} 
+0

여러 개의 이스케이프를 시도 할 때 두 개의'\\'버전을 건너 뛰었어야합니다. 죄송합니다 귀하의 도움에 감사드립니다 :) – morynicz

관련 문제