正则表达式从网页中提取c / c ++

时间:2014-04-23 20:07:02

标签: regex perl

我是网页设计的新手,我目前正在为我的大学项目设计一个网站。现在,我面临的问题如下:

我使用perl从链接中提取C / C ++代码。我正在使用:

my $req = HTTP::Request->new( GET => $link );
my $response = $ua->request($req);
my $results = $response->content;

获取整个网页"结果"变量。然后,我使用以下方法删除JavaScript:

while($results=~s/<script.*?>.*?<\/script>//gsi){};

然后最后打印我正在使用的输出:

pos($results)=0;
$delim='{}';
while($results=~s/.*?($regex\s*?\(.*?\)\s*?)\{/\{/s)
{
  $code=$1 . extract_codeblock($results,$delim);
  print Dumper( "$code" . "\n" . "\n");
}

我的正则表达式是:

my $regex='(((int|long|double|float|void)\s*?\w{1,25})|if|while|for)';

但是这段代码没有给出输出。我的正则表达不正确。有人可以建议我一个很好的正则表达式来提取cpp代码。通过提取代码,我们的想法是在中间提取任何东西和所有东西。&#34; {&#34;和&#34;}&#34;在网页上。

1 个答案:

答案 0 :(得分:1)

为了阅读和解析网页,我建议您使用Mojo::UserAgentMojo::DOM。两者都安装了Mojolicious

有关同时使用这两者的教程,我建议您在mojocast episode 5观看8分钟的视频。

理想情况下,在使用网页时,内容类型应该无关紧要。相反,它放在页面上的位置应该是提取所需数据所需的唯一信息。