从字符串中抓取Regex的视频尺寸?

时间:2011-07-22 12:17:52

标签: .net regex parsing video ffmpeg

我正试图从.net中ffmpeg输出的字符串中获取视频的尺寸,我试图通过正则表达式获得的尺寸基本上就像这个1080x960 320x264等。

我发现很多关于这个主题的文章,但这些都不适合我,遗憾的是我不是正则表达式专家,所以我无法编辑他们的代码..我正在尝试编辑的代码,不能如果它给你任何见解,工作看起来像这样;

   Match c = Regex .Match (ffmpegOutputString,"\\s(\\d+)[xX](\\d+)\\s");
   int w=int.Parse ( c.Groups[1].Value );
   int h=int.Parse ( c.Groups[2].Value );

我需要解析的字符串就是这个;

   Video: wmv3 (Main), yuv420p, 360x264, 400 kb/s, PAR 1:1

凭借我的基本正则表达式知识对我来说似乎没问题,但它无法抓取任何东西,即使我给它一个空字符串作为输入,结果是相同的,c.count是1,值是空字符串。

任何帮助表示赞赏!感谢。

2 个答案:

答案 0 :(得分:2)

使用您需要解析的字符串,360x264后面会有一个逗号。你的正则表达式是"\\s(\\d+)[xX](\\d+)\\s"\\s匹配空格或制表符等空格字符。尝试从正则表达式中删除尾随\\s

答案 1 :(得分:2)

你和你的正则表达式很接近。它不匹配的原因是因为开头和结尾的\ s。你的解析字符串前面有一个空格,但不在末尾,所以它不匹配。

另外,使用(\ d)而不是\ d会导致单个数字匹配,所以我删除了paren。

  

尝试使用此正则表达式:\ d + [xX] \ d +

我在RegExLib测试了它,这是使用正则表达式的一个很好的参考。