C# 正则表达式从字符串中拆分并提取多个部分

C# 正则表达式从字符串中拆分并提取多个部分,c#,.net,regex,C#,.net,Regex,我试图从下面的文本中提取“视频:”行的一些部分 Seems stream 0 codec frame rate differs from container frame rate: 30000.00 (300 00/1) -> 14.93 (1000/67) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\a.3gp': Metadata: major_brand : 3gp5 minor_version : 0

我试图从下面的文本中提取“视频:”行的一些部分

Seems stream 0 codec frame rate differs from container frame rate: 30000.00 (300
00/1) -> 14.93 (1000/67)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\a.3gp':
  Metadata:
    major_brand     : 3gp5
    minor_version   : 0
    compatible_brands: 3gp5isom
  Duration: 00:00:45.82, start: 0.000000, bitrate: 357 kb/s
    Stream #0.0(und): Video: mpeg4, yuv420p, 352x276 [PAR 1:1 DAR 88:69], 344 kb
/s, 14.93 fps, 14.93 tbr, 90k tbn, 30k tbc
    Stream #0.1(und): Audio: aac, 16000 Hz, mono, s16, 11 kb/s
    Stream #0.2(und): Data: mp4s / 0x7334706D, 0 kb/s
    Stream #0.3(und): Data: mp4s / 0x7334706D, 0 kb/s*
这是ffmpeg命令行的一个输出,在这里我可以得到视频:partwith

private string ExtractVideoFormat(string rawInfo)
{
    string v = string.Empty;
    Regex re = new Regex("[V|v]ideo:.*", RegexOptions.Compiled);
    Match m = re.Match(rawInfo);
    if (m.Success)
    {
        v = m.Value;
    }
    return v;
}
结果是

mpeg4,yuv420p,352x276[标准杆1:1 DAR 88:69],344KB

我想做的是以某种方式分开这条线

mpeg4
yuv420p
352x276 [PAR 1:1 DAR 88:69]
344 kb

指定给不同的字符串对象而不是单个对象,可以使用拆分字符串

但是当我使用你的表达式时,它与下面的匹配

视频:mpeg4,yuv420p,352x276[PAR 1:1 DAR 88:69],344kb/s,每秒14.93帧, 14.93 tbr,90k tbn,30k tbc流#0.1(und):音频:aac,16000 Hz,单声道, s16,11 kb/s流#0.2(und):数据: mp4s/0x7334706D,0 kb/s流 #0.3(und):数据:mp4s/0x7334706D,0 kb/s*

这可能是由于字符串中的换行

您可以使用以下表达式

[Vv]ideo:(,? *(?<item>[^,])+)*
[Vv]ideo:(,?*(?[^,])+)*
并捕获命名组项中所有感兴趣的部分,而无需执行其他拆分

String[] words = result.Split(", " , StringSplitOptions.None)
将在数组中为您提供以下单词(我将它们放在新行上,以便更清楚返回的内容)

mpeg4

yuv420p

352x276

[标准1:1 DAR 88:69]


344KB

请重新格式化我的问题
String[] words = result.Split(", " , StringSplitOptions.None)