POSIX ERE(扩展正则表达式)中的正后视或非捕获组

Positive lookbehind or non-capturing group in POSIX ERE (Extended Regular Expressions)

在一个 CSV 文件中有类似这一行的行:

<iframe src="https://player.vimeo.com/video/30342373" width="640" height="364" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>

我想从这些行中提取 30342373,它在 vimeo.com/video/" 之间。我在 mawk:

中尝试了以下正则表达式
vimeo\.com\/video\/[^"]*

正在捕获:vimeo.com/video/30342373

如果我没记错的话,mawk 只支持 POSIX ERE 语法,类似于 egrep.

我怎样才能从行中只捕获唯一的视频 ID 部分?

使用 sed 更容易:

str='<iframe src="https://player.vimeo.com/video/30342373" width="640" height="364" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'

sed 's~.*\.vimeo\.com/video/~~; s~" .*~~' <<< "$str"

30342373

这个 sed 首先去除从开始到 vimeo.com/video/ 的所有内容,然后去除从 " 到结束的所有内容,这样我们就只剩下唯一的 ID。

$ awk '{gsub(/.*vimeo.com\/video\/|".*/,"")}1' file
30342373