【问题标题】:Grabbing video dimensions by Regex from a string?通过正则表达式从字符串中获取视频尺寸?
【发布时间】:2011-07-22 12:17:52
【问题描述】:

我正在尝试从 .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,值是空字符串。

感谢任何帮助!谢谢。

【问题讨论】:

    标签: .net regex parsing video ffmpeg


    【解决方案1】:

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

    【讨论】:

    • 工作就像一个魅力!谢谢!
    【解决方案2】:

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

    另外,使用 (\d) 代替 \d 会导致各个数字匹配,因此我删除了括号。

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

    我在RegExLib 对其进行了测试,这是使用正则表达式的绝佳参考。

    【讨论】:

    • 也谢谢你!你刚刚错过了 2 分钟我已经接受了凯夫拉尔的答案,但我已经尝试了你的两个答案,并且肯定会提出你的建议!再次感谢!
    • 我更喜欢这个答案,因为它更简单
    猜你喜欢
    • 2015-05-05
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2018-07-03
    • 1970-01-01
    • 2017-06-07
    • 2014-04-09
    相关资源
    最近更新 更多