+ -
当前位置:首页 → 问答吧 → perl正则表达式匹配FTP地址的问题

perl正则表达式匹配FTP地址的问题

时间:2011-06-17

来源:互联网

一个FTP地址的形式可能是下面的其中一种(至于是哪一种,不确定):
(1)、ftp://192.168.1.10/path1/path2/path3
(2)、ftp://[email protected]/path1/path2/path3
(3)、ftp://user:[email protected]/path1/path2/path3
该如何用正则表达式呢?
需要分解出:用户名,密码,IP地址,和路径
即,对照上面的FTP:
(1)用户名为空,密码为空,IP=192.168.1.10,路径=path1/path2/path3
(2)用户名=user,密码为空,IP=192.168.1.10,路径=path1/path2/path3
(1)用户名=user,密码=password,IP=192.168.1.10,路径=path1/path2/path3
请问该如何匹配?
谢谢。

下面是我自己写的一个正则表达式,但不理想

   my $package_path = shift;
    my ($user_name,$password,$server_ip,$curversion_file);
    my $user_name_pwd;
    if($package_path =~ /ftp\:\/\/(.*)\(.*?)\@?(\d+)\.(\d+)\.(\d+)\.(\d+)\/(.*)/)
    {
        $user_name = $1;
        $password = $2;
        $server_ip = "$3.$4.$5.$6";
        $curversion_file = $7;
    }

作者: suautotest   发布时间: 2011-06-17

去看看 Regexp::Common::URI::ftp
这种常用的都有人写好了

作者: zhlong8   发布时间: 2011-06-17

比如你可以这么用 /$RE{URI}{FTP}{-keep}{-password}/

作者: zhlong8   发布时间: 2011-06-17

我还是认为自己写比较好一点,可以灵活控制
有没有人能帮我解决一下?

作者: suautotest   发布时间: 2011-06-17



QUOTE:
我还是认为自己写比较好一点,可以灵活控制
有没有人能帮我解决一下?
suautotest 发表于 2011-06-17 13:28




    还要教你怎么写啊……

m#^ftp://(?:
    (\w+)
    (?::(\w+))?
    \@)?
    (.*?)/
    (.*)$
#x

作者: zhlong8   发布时间: 2011-06-17