我有一个格式化的文本文件,例如:
<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";
}
}
}
答案 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";