Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Perl使用正则表达式拆分一行_Html_Regex_Perl_Split - Fatal编程技术网

Html Perl使用正则表达式拆分一行

Html Perl使用正则表达式拆分一行,html,regex,perl,split,Html,Regex,Perl,Split,我试图将下面的行拆分,其中有一个,和逗号,以将其放入一个数组中。我需要得到LUN-JUE、VIE、SAB和DOM的日期,以及相应的时间。我昨天开始学习perl,遇到了这个问题,需要帮助 这些是我必须做的事情的说明,因此我不确定是否可以使用split 制作一个Perl脚本或程序,使用正则表达式读取测试文件,提取电影名称和放映时间,并创建html 文件以显示提取的数据 这是我尝试过的,我知道我还没有接近 @hours = $row.split(/[<br \/><br>]+/

我试图将下面的行拆分,其中有一个


和逗号,以将其放入一个数组中。我需要得到LUN-JUE、VIE、SAB和DOM的日期,以及相应的时间。我昨天开始学习perl,遇到了这个问题,需要帮助

这些是我必须做的事情的说明,因此我不确定是否可以使用split

  • 制作一个Perl脚本或程序,使用正则表达式读取测试文件,提取电影名称和放映时间,并创建html 文件以显示提取的数据
  • 这是我尝试过的,我知道我还没有接近

    @hours = $row.split(/[<br \/><br>]+/);
    
    @hours=$row.split(/[
    ]+/);
    &

    elsif($row=~qr{(.+)
    (.+),(.+),(.+)
    (.+)
    ){ @小时=1美元; 打印“@hours\n”; }
    这是我要分开的线

    LUN - JUE <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM<br>VIE <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM, 11:10 PM<br>SAB <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM, 11:10 PM<br>DOM <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM <br/>
    
    LUN-JUE
    上午10:30,下午1:40,下午4:50,晚上8:00
    VIE
    上午10:30,下午1:40,下午4:50,晚上8:00,晚上11:10
    南非标准时间
    上午10:30,下午1:40,下午4:50,晚上8:00,晚上11:10
    英国标准时间
    上午10:30,下午1:40,下午4:50,晚上8:00
    首先,
    @hours=$row.split(/[
    ]+/)无效
    perl
    语法

    第二,<代码> [BR\/>BR>] <代码>将不适用于你,因为它将独立地考虑每个字符而不是作为一个组。

    因此,您应该在
    regex
    中使用分组。但在
    split
    中,当您在组中保留分隔符时,该组也会在结果集中被捕获,因此要删除它,请保留
    (?:)
    ,即非捕获组

    这将对您有用:

    my $string='LUN - JUE <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM<br>VIE <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM, 11:10 PM<br>SAB <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM, 11:10 PM<br>DOM <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM <br/>';
    
    my @array=split(/(?:<\s*br\s*\/\s*>|<\s*br\s*>)+/i,$string);
    
    my$string='LUN-JUE
    上午10:30、下午1:40、下午4:50、晚上8:00
    VIE
    上午10:30、下午1:40、下午4:50、晚上8:00、晚上11:10
    SAB
    上午10:30、下午1:40、下午4:50、晚上8:00、晚上11:10
    DOM
    上午10:30、下午1:40、下午4:50、晚上8:00
    ; my@array=split(/(?:|)+/i,$string);
    保留
    \s*
    将处理所有在
    br
    标记中有多个空格的情况

    要了解更多信息,您应该学习并使用此脚本。


    你能详细说明一下你的答案吗?我希望能够完全理解它,谢谢。“我昨天开始学习perl”这不是一个帮助您学习perl的网站。一旦你掌握了这门语言,遇到了一个你无法解决的问题,那么你应该来这里询问一下。堆栈溢出旨在成为编程问题的知识库。如果你只是不懂英语,那么还有更好的地方可以寻求帮助
    my $string='LUN - JUE <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM<br>VIE <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM, 11:10 PM<br>SAB <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM, 11:10 PM<br>DOM <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM <br/>';
    
    my @array=split(/(?:<\s*br\s*\/\s*>|<\s*br\s*>)+/i,$string);
    
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use Data::Dumper;
    
    my $sample = 'LUN - JUE <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM<br>VIE <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM, 11:10 PM<br>SAB <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM, 11:10 PM<br>DOM <br /> 10:30 AM, 1:40 PM, 4:50 PM, 8:00 PM <br/>';
    
    my $line_re = qr/\s*\Q<br\E\s*\/?\Q>\E\s*/i;
    my $day;
    my %lookup;
    
    for my $line ( split($line_re, $sample) ) {
    
      $line =~ s/^\s+|\s*$//g;
      $day = $line if(!defined $line || $line =~ m/^[a-z]/i);
    
      if ( $line =~ m/^\d/ ) {
        my @times = split(/,/, $line);
        $lookup{$day} = [@times];
      }
    }
    
    print Dumper \%lookup;
    
    $VAR1 = { 
              'VIE' => [ 
                         '10:30AM',
                         '1:40PM',
                         '4:50PM',
                         '8:00PM',
                         '11:10PM'
                       ],
              'SAB' => [ 
                         '10:30AM',
                         '1:40PM',
                         '4:50PM',
                         '8:00PM',
                         '11:10PM'
                       ],
              'LUN-JUE' => [ 
                             '10:30AM',
                             '1:40PM',
                             '4:50PM',
                             '8:00PM'
                           ],
              'DOM' => [ 
                         '10:30AM',
                         '1:40PM',
                         '4:50PM',
                         '8:00PM'
                       ]
            };