2013-04-07 1 views
1

나는 약 35KB의 텍스트를 가지고 있는데, 작은 조각의 데이터를 가져와야한다. 데이터를 찾기 위해 여러 regexes를 사용하고, 그 부분은 잘 작동합니다.여러 개의 정규식을 실행하기 전에 큰 파일을 분할해야합니까?

내 질문 : 나는 여러 개의 작은 문자열에 큰 텍스트를 분할하고 각 문자열에 해당하는 정규 표현식에를 실행하거나 하나 개의 큰 문자열에 보관하고 각 정규식에 대한 정규를 재설정해야합니까? 어떤면에서 효율성이 가장 좋은가?

+1

후 당신은 개선이 그 안에 할 수있는 경우에만 우리는 당신을 말할 수있는 다음 코드를 구문 분석하는 정규 표현식. – anubhava

+0

파일에 여러 줄의 작은 입력 줄이 있거나 35KB의 큰 덩어리입니까? –

+0

이 문제가 발생 했습니까? 그것이 병목인지 알 수 있습니까? –

답변

1

너무 느리게 실행되고 있지 않은 경우, 현재이 충분히 빠르게 작동하고 뭐든지 함께 할 것입니다.

그렇지 않으면, 당신은 어쨌든이 작업 원시 정규 표현식에를 사용하지 않아야합니다. "작은 데이터 비트"를 추출하는 "여러 정규 표현식"을 언급하자마자 파서를 작성하는 것에 대해 이야기하고 있으며 적절한 파싱 도구를 사용해야합니다.

자바를 사용하면서 매우 성숙하고 안정적인 C 도구의 성숙한 Java 구현 인 jFlex으로 시작하는 것이 좋습니다.

는 대부분의 작업을 위해 jFlex는 당신이 필요로하는 모든 것뿐만 아니라 더 복잡 할 문제가 증명해야 자바 파서 발전기의 번호와 원활하게 통합합니다. 내 개인적인 취향은 다소 애매한 Beaver입니다. 당신이 정규 표현식에 세트로 구현할 수 있다면 물론

, 그것은 더 복잡하지 않고 jFlex 당신을 위해 일을 할 것입니다.

+0

어휘 분석기에 익숙하지 않지만 입력에 패턴이 필요하지 않습니까? 필자의 입력 데이터는 구조화 된 언어보다 서면 문서와 비슷하며 형식화가 반복되지 않습니다. 각 정규 표현식은 한 번만 일치하며 각 정규 표현식은 다릅니다. – Ralgha

+0

어휘 분석기는 많은 수의 정규 표현식을 동시에 일치시키고 선택적으로 일치에서 파생 된 일부 '토큰'을 반환하는 방법 일뿐입니다. JFlex와 같은 상태 저장 렉서를 사용하면 정규 표현식을 '상태'로 그룹화하고 일치하는 항목에 따라 정규 표현식을 전환 할 수 있습니다. 설명에서 알 수 있듯이 JFlex는 문제에 완벽하게 부합합니다 (피할 수없는 말장난을 용서한다면). 일반 문법 파서는 일반적인 추가 작업이지만 구조화 된 언어가 필요합니다. 그러나 자연어 처리 툴킷의 통계 파서를 사용할 수도 있습니다. – Recurse

+0

제안에 감사 드리며 조사해 보겠습니다. – Ralgha

관련 문제