【发布时间】:2020-09-09 10:57:31
【问题描述】:
我目前有一个字符串:
https://drive.google.com/file/d/j2903r293rj092j3r20/view?usp=sharing
我想从中提取j2903r293rj092j3r20。我在 Mac OS 中使用标准 perl 安装。我有
URL="https://drive.google.com/file/d/j2903r293rj092j3r20/view?usp=sharing"
echo $URL | perl -pe 's/https\:\/\/drive.google.com\/file\/d\///g' | perl -pe 's/\/view\?usp=sharing//g'
我将 perl 应用于正面和背面。有没有办法一步一步做到这一点?谢谢
【问题讨论】:
-
可能是
perl -pe 's/.*\/([^\/]+)\/.*/$1/' file,见demo。 -
也许这应该用适当的解析器来解决stackoverflow.com/q/12425393/725418
-
不要使用正则表达式来解析 URL。这是一个已解决的问题。使用 Perl 自带的 URI 模块。
-
可能是这种
echo 'https://drive.google.com/file/d/j2903r293rj092j3r20/view?usp=sharing' | perl -ne '@parts = split '/' ; print $parts[-2]'-- 输出j2903r293rj092j3r20 -
@PolarBear
perl -F/ -lane'print $F[-2]'更短。但我认为还是使用解析器更好。