在POSIX ERE正回顾后或非捕获组(扩展正则表达式)

问题描述:

在CSV文件中也有类似的这一个行:在POSIX ERE正回顾后或非捕获组(扩展正则表达式)

<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部分?

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

谢谢!这工作完美。 – Lanti

它与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。