write Perl Regex



我有一些URL,如下所示:

http://srv1.Example.com/movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv.T8d89281498deef0.mkv?md5=d0c61a41d7d0095edc0210244561bb34&过期=1609025725

http://srv2.Example.com/movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv

现在,我要选择这些Example.com URL并对其进行索引。所以需要一些regex来完成它并从中导出路径。我做regex,类似这样的东西:

http://[^/]+.Example.com/(?p[^?].(?:mp4|mkv(((.(

问题:当使用以上Regex时,为我导出的路径是:

path=电影/99/09/06/The.True.Adventures of.Wolboy.2019.720p.asli.mkv.T8d89281498deef0.mkv

但我想要同时支持URL和导出路径的regex,如:

路径=电影/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mmv

我很感激,如果能帮我写一个正则表达式来从URL导出路径,比如:

路径=电影/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mmv

谨致问候,

Hamed Haghshenas

使用URL解析模块而不是regex。模块不仅可以正确地执行此操作,而且不必读取或调试模式。一旦您有了对象,您就可以在它中查询所需的零件。

Mojo::URL就是这样一个东西:

use Mojo::URL;
my $url = '...';
my $path = Mojo::URL->new( $url )->path;

还有URI:

use URI;
my $path = URI->new( $url )->path

对于命令行,我编写了App::url。在幕后,它也做同样的事情,但我可以使用类似sprintf的格式来获得我想要的部分:

$ url '%P' http://www.example.com/a/b/c
/a/b/c

这就是您想要的吗?

http://(?:[^/]+.)?Example.com/(?P<path>[^?]+?.(?:mkv|mp4))

点击此处查看测试

最新更新