编写 Perl 正则表达式
write Perl Regex
我有一些 URL 如下:
和
http://srv2.Example.com/movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv
现在我想要 select 这些 Example.com URL 并索引它们。所以需要一些正则表达式来做它并从中导出路径。我制作正则表达式,像这样:
http://[^/]+.Example.com/(?P[^?].(?:mp4|mkv))(.)
问题:当使用上面的正则表达式时,我导出的路径是这样的:
路径=movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv.T8d89281498deef0.mkv
但我想要支持 URL 的正则表达式并导出路径,如:
路径=movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv
非常感谢,如果能帮我写一个正则表达式来从 URL 导出路径,例如:
路径=movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv
此致,
哈米德·哈格申纳斯
这是你想要的吗?
http:\/\/(?:[^\/]+\.)?Example\.com\/(?P<path>[^?]+?\.(?:mkv|mp4))
查看测试here
使用 URL 解析模块代替正则表达式。该模块不仅会正确执行,而且您不必阅读或调试模式。获得对象后,您可以在其中查询所需的部分。
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
我有一些 URL 如下:
和
http://srv2.Example.com/movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv
现在我想要 select 这些 Example.com URL 并索引它们。所以需要一些正则表达式来做它并从中导出路径。我制作正则表达式,像这样:
http://[^/]+.Example.com/(?P[^?].(?:mp4|mkv))(.)
问题:当使用上面的正则表达式时,我导出的路径是这样的:
路径=movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv.T8d89281498deef0.mkv
但我想要支持 URL 的正则表达式并导出路径,如:
路径=movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv
非常感谢,如果能帮我写一个正则表达式来从 URL 导出路径,例如:
路径=movie/99/09/06/The.True.Adventures.of.Wolfboy.2019.720p.asli.mkv
此致,
哈米德·哈格申纳斯
这是你想要的吗?
http:\/\/(?:[^\/]+\.)?Example\.com\/(?P<path>[^?]+?\.(?:mkv|mp4))
查看测试here
使用 URL 解析模块代替正则表达式。该模块不仅会正确执行,而且您不必阅读或调试模式。获得对象后,您可以在其中查询所需的部分。
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