[英]regex split and extract multiple parts from a string
我正在嘗試從文本下方提取“視頻:”行的某些部分。
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命令行的輸出,我可以在其中獲取視頻:
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 [PAR 1:1 DAR 88:69],344 kb
我想做的就是以某種方式拆分該行並獲得
mpeg4
yuv420p
352x276 [PAR 1:1 DAR 88:69]
344 kb
分配給不同的字符串對象而不是單個
String[] words = result.Split(", " , StringSplitOptions.None)
將在數組中給您以下單詞(我將它們放在換行符上,只是為了使返回的內容更清楚)
MPEG4
YUV420P
352x276
[PAR 1:1 DAR 88:69]
344 KB
我發現在開發和調試Regex時使用正則表達式應用程序(例如RegexBuddy)是非常有用的可視化工具:
您可以使用String.Split()
拆分字符串。
string[] parts = String.Split(new [] { ", " }, text);
但是,當我使用您的表達式時,它與以下內容匹配。
視頻:mpeg4,yuv420p,352x276 [PAR 1:1 DAR 88:69],344 kb /s、14.93 fps,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>[^,])+)*
並捕獲命名組項目中所有有趣的部分,而無需執行其他拆分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.