我有一个类似于以下内容的字符串:
"01Jan00 20:07:16#[AA] :Test aaa - ExOne: 2264 ms, ExTwo: 8988 ms, ExThree: 14252 ms, Avg Ex (x100): 3229"
我试图从这个字符串中获取4个值(ExOne,ExTwo,ExThree,Avg Ex),或者使用正则表达式,或者通过':'拆分字符串并解析其中的值。我是正则表达式的新手,所以这是我的尝试:
Regex rx = new Regex(@"ExOne: (?<exOne>\d+).((?<= ExTwo:)(.*?<exTwo>)(?= ms)).(?<exThree>\d+).((?<=\:.).(?<avgEx>\d+))");
如果我使用ExOne: (?<exOne>\d+)
本身,我得到2264这是我需要的值。我一直试图做的是在获得第一个值后跳到第二个值并将其放入分组中,然后使用前瞻。
答案 0 :(得分:1)
我建议使用
\b\d+(?=\s*ms\b|$)
请参阅demo
正则表达式匹配:
\b
- 字边界\d+
- 一位或多位(?=\s*ms\b|$)
- 然后检查是否有0个或更多的空格符号,后跟ms
整个单词,或者只是字符串的结尾。C#代码:
var txt = "01Jan00 20:07:16#[AA] :Test aaa - ExOne: 2264 ms, ExTwo: 8988 ms, ExThree: 14252 ms, Avg Ex (x100): 3229";
var result = Regex.Matches(txt, @"\b\d+(?=\s*ms\b|$)").Cast<Match>().Select(p => p.Value).ToList();
结果: