Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Regex从字符串中获取比特率值_C#_Regex - Fatal编程技术网

C# Regex从字符串中获取比特率值

C# Regex从字符串中获取比特率值,c#,regex,C#,Regex,我在命令行中使用FFMPEG获取ASP.NET C#应用程序中文件的媒体信息。我需要从包含FFMPEG输出的字符串值中获取比特率值,如下所示: Duration: 00:00:02.60, start: 0.000000, bitrate: 517 kb/s Stream #0.0(eng): Video: h264, yuv420p, 1024x768, 15.00 tb(r) Stream #0.1(eng): Audio: aac, 22050 Hz, mono, s1

我在命令行中使用FFMPEG获取ASP.NET C#应用程序中文件的媒体信息。我需要从包含FFMPEG输出的字符串值中获取比特率值,如下所示:

  Duration: 00:00:02.60, start: 0.000000, bitrate: 517 kb/s
    Stream #0.0(eng): Video: h264, yuv420p, 1024x768, 15.00 tb(r)
    Stream #0.1(eng): Audio: aac, 22050 Hz, mono, s16
所以我想用正则表达式从
比特率:517kb/s
中得到整数值。。。我的文件在上下文中的比特率只有1500左右,所以它需要能够获得2、3和4位数的值

如何做到这一点

干杯

这应该够了

Match match = Regex.Match(ffmpegStr, @"bitrate: (\d+)");

if (match.Success)
{
    Console.WriteLine(match.Groups[1].Value);
}
其中
ffmpegStr
是您的数据

您可以将
+
替换为
{2,4}
以仅匹配2到4位数字



或者,您可以使用输出机器读取友好数据。

您可以使用
+
限定符获得字符串的位数:

bitrate: (?<bitrate>\d+) kb/s
比特率:(?\d+)kb/s 从
“比特率”
捕获组读取值

(bitrate:\s)(\d+)
上面将匹配并创建两个组。整数值将在第二组中。

不带regex

string line = "Duration: 00:00:02.60, start: 0.000000, bitrate: 517 kb/s";
string pattern = "bitrate: ";
int bitrate = -1;
int index = line.IndexOf(pattern, StringComparison.OrdinalIgnoreCase);
if(index >= 0)
{
    index += pattern.Length;
    int endIndex = line.IndexOf(" kb/s", index + 1, StringComparison.OrdinalIgnoreCase);
    if(endIndex >= 0)
    {
        int.TryParse(line.Substring(index, endIndex - index), out bitrate);
    }
}

看起来您正在解析FFmpeg输出。FFmpeg允许输出到JSON(和其他一些格式),从而更容易获取所需的任何数据。您可能希望研究该选项,而不是依赖正则表达式。

为什么在您的示例中使用双反斜杠?我的错误是,我的印象是正则表达式中需要双反斜杠。