2012-09-14 5 views
0

패턴 해석 및 규칙 생성 시스템이 필요합니다. 기본적으로 어떻게 작동 할 것인가는 텍스트를 분석하고 그 패턴을 해석해야하며, 그 중간에 기초하여 일련의 규칙을 출력해야합니다. 다음은 그 예입니다. 내가 파서이 출력Python : 패턴 탐지 및 규칙 생성

req-hdr-pattern: "^GET[ ].*/api/1\\.0/download/{STRING:auth_token}/{STRING:id}[].*website\\.com" 

위의 규칙은 정규식의 수정 된 버전을 포함 통해 실행됩니다

GET https://website.com/api/1.0/download/8hqcdzt9oaq8llapjai1bpp2q27p14ah/2139379149 HTTP/1.1 
Host: website.com 
User-Agent: net.me.me/2.7.1;OS/iOS-5.0.1;Apple/iPad 2 (GSM) 
Accept: */* 
Accept-Language: en-us 
Accept-Encoding: gzip, deflate 

처럼 보이는 HTTP 헤더를 가지고 있다고 할 수 있습니다. STRING : auth_token 또는 STRING : id와 같은 각 변수가 추출됩니다.

텍스트 (이 경우 헤더)를 구문 분석하려면 파서에게 "다운로드"이후의 내용을 추출해야 함을 알려야합니다. 따라서 기본적으로이 파서가 텍스트를 구문 분석하고 결국 최종 규칙을 출력하는 데 사용할 일련의 규칙에 대한 정의가 있습니다.

이제 질문은 패턴 매칭, 탐지, 생성을 위해 파이썬에서 사용할 수있는 모듈이 있습니까? 이것은 컴파일러의 파서 부분과 다소 비슷합니다. 나는 스스로를 만들기 위해 깊이 들어가기 전에 묻고 싶다. 어떤 도움이 필요합니까?

답변

1

나는이 이미 답을했다고 생각한다

Parser generation

Python parser Module tutorial

내가 당신이 원하는 것은 대한 파싱 모듈 쉽다는 것을 말씀 드릴 수 있습니다.

+0

이것에 대해 pyparsing을 사용하는 것은 바주카포를 가지고 짤깍 소리를내는 것과 같습니다. –

0

자신에게 가장 적합 할 것입니다. 그것은별로 효과가 없습니다.

말처럼 정규 표현식을 규칙으로 정의해야합니다. 그런 다음 프로그램은 일치하는 정규 표현식을 찾고 일치 항목을 출력 규칙으로 변환합니다.

** 편집 ** 나는 이것을 수행 할 라이브러리가 없다고 생각합니다. 당신이 좋겠이를 위해

req-hdr-pattern: "^GET[ ].*/api/1\\.0/download/{STRING:auth_token}/{STRING:id}[].*website\\.com" 

: 다운로드

그리고이 출력됩니다이 같은 텍스트 후에

EXTRACT : 내가 제대로 이해하면이 같은 일련의 규칙을 지정하려면 규칙을 파싱 할 파서를 만들어야합니다. 규칙 구문의 복잡성에 따라 pyparsing을 사용하거나 정규 표현식을 사용하거나 수동으로 수행 할 수 있습니다. 엄지의 규칙은 구문이 재귀 적 (예 : html) 인 경우 pyparsing을 사용하는 것이 좋습니다. 그렇지 않으면 가치가 없습니다.

이 구문 규칙에서 프로그램은 입력 텍스트와 일치하는 새로운 정규 표현식을 만들어야합니다. 기본적으로 프로그램은 규칙을 정규 표현식으로 변환합니다.

이러한 정규식을 사용하면 입력 텍스트의 데이터를 추출 할 수 있습니다.

+0

아니, 요점은 내가 정규식 expresions.There 내 솔루션의 장점이 없을 것이라고 써야 만해서는 안됩니다. 직접 규칙을 직접 작성할 수 있습니다. – auny

+0

정확하게 이해하셨습니까? 당신은 프로그램이 어떤 텍스트를 통해 파싱하고, 패턴을 추출한 다음 그 패턴을 규칙으로 출력하기를 원할 것입니다. –

+0

예,하지만 그 패턴을 추출하려면, 나는 정확한 패턴과 그 문맥만을 제공해야합니다. 정규식이 없습니다. 이 구문 분석 규칙을 호출하십시오. 구문 분석 규칙은 "다운로드"후 EXTRACT처럼 보입니다. 무슨 뜻인지 알 겠어? – auny

0

미안하지만 이것이 당신이 찾고있는 것이 아니라면 조금 시간이 걸릴 것입니다. 파이썬 contains a section on writing a tokenizer에 대한 모듈 문서를 참조하십시오.
문서화가 잘되어 있지 않지만 실행 가능한 것을 만드는 데 도움이 될 수 있습니다.
자기 자신을 토큰 화하는 것보다 쉽지만, 유연성을 제공하지 못할 수도 있습니다.