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
@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'
]
};