初学者perl问题
|
所以我有这个:
for $i (0..@parsedText) {
if ($parsedText[$i] =~ /\\s{20}<a href/) {
my $eventID = $parsedText[$i];
my $eventLink = $parsedText[$i];
my $event_id_title = $parsedText[$i];
$eventID =~ s/[\\s\\S]*?id=(\\d+).*\\n/$1/;
$eventLink =~ s/[\\s\\S]*?\'(.*?)\'.*/$1/;
$event_id_title =~ s/\\s+<a[\\s\\S]*?>([^<]*).*\\n/$1/;
};
};
但是由于某种原因,如果我打印其中任何一个,它将返回原始值,而不是我希望返回的字符串替换。
谢谢你的帮助
没有找到相关结果
已邀请:
2 个回复
bab
数组中没有换行符。这是写上面所做的一种更简洁的方法:
通常,您应该避免这样解析HTML,而应该使用多年收集的智慧(即http://cpan.org)并使用HTML :: Parser,HTML :: Parser :: Simple或HTML :: TreeBuilder。
屉杆绊
正则表达式可能很棘手。最好构建一个测试程序并逐点测试它们,直到获得所需的东西。请记住,您可以在HTML中使用单引号或双引号,并且URL可以在其中加上引号。而且,ID不必为数字(尽管我在这里将其保留为数字)。
中的\'\\ 1 \'引用单引号或双引号。由于它是正则表达式的一部分,因此您需要在数字前面加反斜杠,而不是美元符号。