将html <p>标记添加到格式化文件</p>

时间:2015-04-18 15:53:56

标签: html perl format

我有一个格式化的文本文件,例如:

<P> <P>
paragraph 1 blablablabla
<P> <P>
paragraph 2 blablablabla
<P> <P>
paragraph 3 blablablabla
<P> <P>
paragraph 4 blablablabla

我需要将此文件转换为具有格式良好的html文件,如下所示:

<p>
paragraph 1 blablablabla
</p>
<p>
paragraph 2 blablablabla
</p>
<p>
paragraph 3 blablablabla
</p>
<p>
paragraph 4 blablablabla
</p>

现在我使用perl脚本,但它不起作用:

my $p = 0;

    while(my $text = <IN>)
    {
        if($text =~ /(<P>\t<P>)/)
        {   
            $p++;
            if($p % 2 == 0){
                print "</p>"."\n";
            }
            else{
                print "<p>"."\n";

            }

        }
   }

2 个答案:

答案 0 :(得分:1)

使用此代码:

my $p = 0;

while ( my $text = <IN> ) {
    if ( $text =~ /(<P>\s*<P>)/ ) {   
        if ( $p == 0 ) {
            $text =~ s{$&}{<P>};
        }
        else {
            $text =~ s{$&}{</P>\n<P>};
        }
        $p++;
    }
    print $text;
}
print "</P>\n";

它的作用基本上是将<P> <P>更改为</P>\n<P>,但第一次出现的情况除外,在这种情况下,替换将仅为<P>。在\s*条件中使用\t代替if也会处理tab以外的空格。

答案 1 :(得分:0)

我已将完整文件读入缓冲区并应用正则表达式:

my $buffer = "";
while(<>) {
    $buffer .= $_;
}

$buffer =~ s|<P>\s+<P>\s(.*?)\n|<p>\n$1\n</p>\n|gs;

print "$buffer\n";