Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# 从字符串中提取部分_C#_.net_Regex - Fatal编程技术网

C# 从字符串中提取部分

C# 从字符串中提取部分,c#,.net,regex,C#,.net,Regex,有人能告诉我如何编写正则表达式来从给定字符串中提取“持续时间”和“时间”吗 Duration: 00:21:38.97, start: 0.000000, bitrate: 2705 kb/s 我想从第一个字符串中提取duration“00:21:38.97”部分 size= 1547kB time=00:01:38.95 bitrate= 128.1kbits/s 我想从第二个字符串中提取时间“00:01:38.95”部分 我试过了 Regex.Match(theString, @"\:

有人能告诉我如何编写正则表达式来从给定字符串中提取“持续时间”和“时间”吗

Duration: 00:21:38.97, start: 0.000000, bitrate: 2705 kb/s
我想从第一个字符串中提取duration
“00:21:38.97”
部分

size= 1547kB time=00:01:38.95 bitrate= 128.1kbits/s 
我想从第二个字符串中提取时间
“00:01:38.95”
部分

我试过了

Regex.Match(theString, @"\:\s([^)]*)\,\s").Groups[1].Value;

当您需要编写正则表达式时,您需要考虑什么描述了您试图匹配的文本

对于第一个示例,您会想到两种可能的描述:

  • “匹配由四个两位数组成的系列,用冒号分隔”。 这将是
    @“\d{2}:\d{2}:\d{2}:\d{2}”
    @”(?:\d{2}:){3}\d{2}”


  • 匹配
    持续时间之后的任何文本:
    直到(但不包括)下一个逗号。这将是
    @”(?这里有一个可能的解决方案:

    class Program
    {
        static void Main(string[] args)
        {
            Regex regex = new Regex(@"(((?<Hour>[0-9]{1,2})[.:](?=[0-9]{2}))?(?<Minute>[0-9]{1,2})[.:])(?<Second>[0-9]{2})[.:](?<Milisecond>[0-9]{2})");
    
            var string1 = "Duration: 00:21:38.97, start: 0.000000, bitrate: 2705 kb/s";
            var string2 = "size= 1547kB time=00:01:38.95 bitrate= 128.1kbits/s ";
    
            foreach(var match in regex.Match(string1).Captures)
            {
                Console.WriteLine(match.ToString());
            }
    
            foreach (var match in regex.Match(string2).Captures)
            {
                Console.WriteLine(match.ToString());
            }
    
            Console.ReadKey();
        }
    }
    

    您不能使用
    String.Split
    ?当您询问regex时,您需要提供大量输入和输出示例,因为无法从单个示例推断模式。这与ffmpeg有什么关系?来自它的输出不是一个好的结果reason@RohitJain,这是我迄今为止尝试过的;Regex.Match(“持续时间:00:21:38.97,开始时间:0.000000,比特率:2705 kb/s“,@“\:\s([^)]*)\,\s”)。组[1]。值;@Miserevariable,我正试图根据FFMPegt的输出制作进度条。非常感谢Leniel Macaferi先生,这正是我想要的。干杯!!
    00:21:38.97
    00:01:38.95