微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 正则表达式不捕获我的网站上的文本

Perl初学者对正则表达式的问题.

以下代码成功从我的网站获取网页内容.
然后,我检查匹配模式“搜索类型:[Dir或Geo]”.我刚写的那一点不是真正的正则表达式代码,而是用于显示我想要匹配的文本.

以下是get方法实际捕​​获的内容的摘录(抱歉,还没有足够的声誉点来发布图像):

what: movers<br/>
        where: toronto<br/>

            search type:
             Dir <br/>

在“搜索类型:”和“目录”之间有选项卡和空格以及您在Word文档中看到的段落字符(紧跟在“类型:”之后).

以下是我的代码.

use strict;
use warnings;
use WWW::Mechanize;
my $searchtype = "nothing yet";
my $mech = WWW::Mechanize->new();
my $webpage;
$mech->credentials('user','password' );
foreach my $keyword qw(movers) {
    print "\$keyword = $keyword\n";
    my $url = "http://myurl";
    $mech->get($url);
    $webpage = $mech->content();
    if ($webpage =~ /search type.+([A-Z][a-z][a-z])/) {
        $searchtype = $1;
        print "$searchtype\n";
    }
}

那么,为什么我的正则表达式不会是$webpage =〜/ search类型. ([A-Z] [a-z] [a-z])/捕获匹配变量$1中的“Dir”?

使我抓狂.

路易

解决方法

/./匹配除换行符之外的任何字符,除非您使用/./s.由于您想要匹配换行符,您必须添加/ s.

/search type.+([A-Z][a-z][a-z])/s

但那会找到文件的最后三个字母.你真的想要

/search type:\s+([A-Z][a-z][a-z])/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐