2017-11-22 4 views
2

*.Tex 파일에 많은 테이블이 포함되어 있고 테이블 내부에 키워드가 있고 키워드가있는 테이블을 가져와야하는 파일이 있습니다. \\tobesplitPerl에서 사전 및 사후 점검을 사용하는 방법은 무엇입니까?

입력 파일 : 키워드 예를 들어

\begin{table1} ....\body1 .... \tbody1 .... \end{table1} 
some text ... 
\begin{table2} .... \body2 .... \\tobesplit ... \tbody2... \end{table2} 
some text ... 
\begin{table3} ....\body3... \tbody3... \end{table3} 
some text ... 

코드 : 여기

my ($tpre,$tmatchs,$tposts) = ""; 
while($incnt=~m/\\tobesplit/gs) 
{ 
    $tpre = $tpre.$`; $tmatchs = $&; $tposts = $'; 
    print "hi...\n"; 
    my ($headers,$footers) = ""; 

우리가

를 시작 테이블 2의 사전 콘텐츠를 필요
if($tpre=~m/(?<!.*\\begin\{table)\\body\d+/g) { $headers = $&; } 

는 여기에서 우리는

if($tposts=~m/\\tbody(.*?)\\end\{table\d+\}/i) { $footers = $&; } 
    print "-$headers-\n"; 
    print "-$footers-\n"; 
} 

참고 종료에 표 2의 후 콘텐츠를해야합니다 ... 단지 식별 목적으로 번호 table123을

나는 펄을 사용하여 lookbehind와 lookafter 함수를 사용하여 pre와 post를 사용하는 방법을 사용하지 않는다. 이걸 좀 도와주게.

미리 감사드립니다.

+3

LaTeX 파서를 사용하는 것이 좋습니다. 예를 들어 [LaTeX :: TOM] (https://metacpan.org/pod/LaTeX::TOM)을 참조하십시오. 또 다른 옵션은 [Perl 6 문법] (https://docs.perl6.org/language/grammar_tutorial)을 사용하는 것입니다. –

+0

@ HåkonHægland : 펄 6을 설치해야합니까? – ssr1012

+0

@ ssr1012 아니요, 그가 말했듯이, Latex :: TOM을 사용하여 모듈에 대한 링크에 대한 주석을 예제와 함께 볼 수 있습니다. –

답변

1

Pegex은 문법 사용을 고려하는 경우 매우 유용합니다. Perl5는 기본 Perl6 스타일의 문법 파싱의 좋은 덩어리입니다. Pegex는 우수하고 미숙 한 모듈입니다.