正则表达式解析句子的html?

正则表达式解析句子的html?,html,regex,perl,parsing,Html,Regex,Perl,Parsing,我知道HTML:Parser是一种东西,通过阅读,我意识到尝试用正则表达式解析HTML通常是一种不太理想的方式,但是对于Perl类,我目前正在尝试使用正则表达式,希望只使用一个匹配项来识别和存储保存的HTML文档中的句子。最终,我希望能够计算句子的数量,单词/句子,并希望计算页面上单词的平均长度 现在,我只是试着将>之后和之前的事情隔离开来。只是想看看它隔离了什么,但我无法让代码运行,即使在操作正则表达式时也是如此。所以我不确定问题是在正则表达式中,还是在其他地方,或者两者都有。任何帮助都将不胜

我知道HTML:Parser是一种东西,通过阅读,我意识到尝试用正则表达式解析HTML通常是一种不太理想的方式,但是对于Perl类,我目前正在尝试使用正则表达式,希望只使用一个匹配项来识别和存储保存的HTML文档中的句子。最终,我希望能够计算句子的数量,单词/句子,并希望计算页面上单词的平均长度

现在,我只是试着将>之后和之前的事情隔离开来。只是想看看它隔离了什么,但我无法让代码运行,即使在操作正则表达式时也是如此。所以我不确定问题是在正则表达式中,还是在其他地方,或者两者都有。任何帮助都将不胜感激

#!/usr/bin/perl
#new
use CGI qw(:standard);
print header;

open FILE, "< sample.html ";
$html = join('', <FILE>);
close FILE;

print "<pre>";

###Main Program###
&sentences;

###sentence identifier sub###

sub sentences {
@sentences;
while ($html =~ />[^<]\. /gis) {
    push @sentences, $1;
}
#for debugging, comment out when running    
    print join("\n",@sentences);
}

print "</pre>";

您的正则表达式应该是/>[^您的正则表达式应该是/>[^第一个改进是在文本中写入$html=~/>[^'。

第一个改进是写入$html=~/>[^'在文本中。

我认为这或多或少满足了您的需要。请记住,此脚本只查看p标记中的文本。文件名作为命令行参数shift传入


我认为这或多或少满足了您的需要。请记住,此脚本只查看p标记内的文本。文件名作为命令行参数shift传入


你能告诉我你遇到了什么错误吗?你说你不能运行代码是什么意思?我希望我能,我收到的唯一错误是服务器错误500,服务器给我的所有错误,从缺少语句到不正确的语法到缺少括号。你仍然从未用正则表达式解析HTML。你能告诉我你遇到了什么错误吗?你怎么办你的意思是你不能让代码运行?我希望我可以,我收到的唯一错误是服务器错误500,服务器给我的一切,从缺少语句到不正确的语法到缺少括号。你仍然从来没有用正则表达式解析HTML。谢谢你的解释,我现在更清楚地理解正则表达式是如何形成的了!谢谢你为了解释,我现在更清楚地理解正则表达式是如何形成的!
while( $html=~ m{>([^<]*<}g) { push @text_content, $1}; 
foreach (@text_content) { while( m{([^.]*)\.}gs) { push @sentences, $1; } }
#!/usr/bin/perl

 use strict;
 use warnings;
 use HTML::Grabber;

 my $file_location = shift;
 print "\n\nfile: $file_location";
 my $totalWordCount = 0;
 my $sentenceCount = 0;
 my $wordsInSentenceCount = 0;
 my $averageWordsPerSentence = 0;
 my $char_count = 0;
 my $contents;
 my $rounded;
 my $rounded2;

 open ( my $file, '<', $file_location  ) or die "cannot open < file: $!";

    while( my $line = <$file>){
          $contents .= $line;
  }      
 close( $file );
 my $dom = HTML::Grabber->new( html => $contents );

 $dom->find('p')->each( sub{
    my $p_tag = $_->text;

    ++$totalWordCount while $p_tag =~ /\S+/g;


    while ($p_tag =~ /[.!?]+/g){
              $p_tag =~ s/\s//g;
              $char_count += (length($p_tag));
              $sentenceCount++;  
          }
     });     


           print "\n Total Words: $totalWordCount\n";
           print " Total Sentences: $sentenceCount\n";
           $rounded = $totalWordCount / $sentenceCount;
           print  " Average words per sentence: $rounded.\n\n";
           print " Total Characters: $char_count.\n";
           my $averageCharsPerWord = $char_count / $totalWordCount  ;

           $rounded2 = sprintf("%.2f", $averageCharsPerWord );

           print  " Average words per sentence: $rounded2.\n\n";