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