我正试图从.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,值是空字符串。
任何帮助表示赞赏!感谢。
答案 0 :(得分:2)
使用您需要解析的字符串,360x264
后面会有一个逗号。你的正则表达式是"\\s(\\d+)[xX](\\d+)\\s"
。 \\s
匹配空格或制表符等空格字符。尝试从正则表达式中删除尾随\\s
。
答案 1 :(得分:2)
你和你的正则表达式很接近。它不匹配的原因是因为开头和结尾的\ s。你的解析字符串前面有一个空格,但不在末尾,所以它不匹配。
另外,使用(\ d)而不是\ d会导致单个数字匹配,所以我删除了paren。
尝试使用此正则表达式:\ d + [xX] \ d +
我在RegExLib测试了它,这是使用正则表达式的一个很好的参考。