使用perl删除两个注释之间的html代码
发布时间:2020-12-16 06:17:12 所属栏目:大数据 来源:网络整理
导读:说我有一些html从文件中保存在字符串中使用perl,如下所示 tbody tr td width="650" !--MyComment-- a href="http://myurl.com"img src="myimage.png" /a !--MyComment-- /td /tr /tbody......... 在两条评论之间删除HTML代码的最佳方法是什么 我在考虑使用HT
说我有一些html从文件中保存在字符串中使用perl,如下所示
<tbody> <tr> <td width="650"> <!--MyComment--> <a href="http://myurl.com"><img src="myimage.png" > </a> <!--MyComment--> </td> </tr> </tbody> ... ... ... 在两条评论之间删除HTML代码的最佳方法是什么 解决方法
一种选择是使用拉解析器.这里有一个HTML :: TokeParser示例.它使用两个循环,第一个循环用于查找注释的第一个外观.它打印它找到的每个标签,直到那里.第二个遍历所有标记,直到第二次出现相同类型的注释,并且不打印任何内容.
script.pl的内容: #!/usr/bin/env perl use warnings; use strict; use HTML::TokeParser; my $p = HTML::TokeParser->new ( shift ); while ( my $token = $p->get_token ) { printf qq|%s|,$token->[0] =~ m/S|E|PI/ ? $token->[ $#$token ] : $token->[1]; if ( $token->[0] eq q|C| && $token->[1] =~ m/(?i)MyComment/ ) { ## Here begins the comment. while ( my $token2 = $p->get_token ) { if ( $token2->[0] eq q|C| && $token2->[1] =~ m/(?i)MyComment/ ) { ## Here ends the comment. printf qq|%s|,$token2->[1]; last; } } } } 运行它像: perl script.pl htmlfile 产量: <html> <head> <title>Title</title> </head> <body> <tbody> <tr> <td width="650"> <!--MyComment--><!--MyComment--> </td> </tr> </tbody> </body> </html> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |