如何在Perl中使用前检查和后检查?

如何在Perl中使用前检查和后检查?,perl,Perl,我们有一个*.Tex文件,它包含很多表,表中有一个关键字,我们必须获取包含关键字的表 对于关键字例如:\\tobesplit 输入文件: \begin{table1} ....\body1 .... \tbody1 .... \end{table1} some text ... \begin{table2} .... \body2 .... \\tobesplit ... \tbody2... \end{table2} some text ... \begin{table3} ....\bod

我们有一个*.Tex文件,它包含很多表,表中有一个关键字,我们必须获取包含关键字的表

对于关键字例如:\\tobesplit

输入文件:

\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 ...
代码:

在这里,我们需要从一开始就得到表2的pre内容

注:表123中的数字仅供识别之用

我不知道如何在perl中使用pre和post以及lookback和lookafter函数。你能在这件事上找个人帮我吗


提前感谢。

如果您正在考虑使用语法,那么它非常有用。它为Perl5提供了一个良好的基本Perl6风格语法解析块。Pegex是一个优秀且未被充分使用的模块。

我建议您使用LaTeX解析器。例如,见。另一种选择是使用@HåkonHægland:我需要安装perl 6?@ssr1012不,正如他所说,您可以使用Latex::TOM查看他的评论,以获得指向模块的链接,并提供示例。@GerhardBarnard:好的。我们会查的。@ssr1012酷,希望你能搞定!附言我希望您所指的不是多重人格:
my ($tpre,$tmatchs,$tposts) = "";
while($incnt=~m/\\tobesplit/gs)
{
    $tpre = $tpre.$`; $tmatchs = $&; $tposts = $';
    print "hi...\n";
    my ($headers,$footers) = "";
    if($tpre=~m/(?<!.*\\begin\{table)\\body\d+/g) {  $headers = $&; }
    if($tposts=~m/\\tbody(.*?)\\end\{table\d+\}/i) {  $footers = $&; }
    print "-$headers-\n";
    print "-$footers-\n";
}