如何通过RegEx获取前缀,值和指数

时间:2018-09-04 15:13:10

标签: c# regex

这是对以下问题的扩展:How to separate numbers and characters with RegEx?

这是要检查的文本:

"min:   42.4ms"

"typ:   42,8ms"

"max:   43,2 ms"
"max 43,2 s"
"blublub_typ = n.a."
"bla_max = 2500,0 µs"
"jubdi,"dupp_min = 100,0 µs"

我想找到这个,分为三组:

(min) (42.4) (ms)
(typ) (42,8) (ms)
(max) (43,2) (ms)
(max) (43,2) (s)
(typ) (n.a.)
(max) (2500,0) (µs)
(min) (100,0) (µs)

由于我只对正确的RegEx模式感兴趣,所以这只是一种用方括号描述每个结果组的内容的方法。

这是我尝试的示例:

(min:|max|typ|max:)+\s?(\d+[.,]\d+|\d+)\s?(µs|ms|s)

问题:

但是我不知道如何忽略有趣部分前面的任何文本。此外,通过不提及第一组中的所有可能性,我不知道如何忽略任何相等的运算符或冒号,以及代替它们会出现什么情况。

有人可以帮助我吗? 提前非常感谢!

2 个答案:

答案 0 :(得分:3)

在测试.Net regexes时,应使用RegexStorm,因为其行为与Regex101提供的风味并不完全相同。

我将使用此正则表达式(demo):

.*(?<type>min|max|typ)[ :=]+(?<value>\d*[,.]?\d*)\s?(?<unit>.*)"

使用命名捕获组允许更多地了解其功能。它为您提供以下匹配项:

enter image description here

答案 1 :(得分:0)

以下对我有用:

.*(min|max|typ)[\S|\s]=?\s?(\d*.?\d*)\s?(.*)

您可以在以下URL https://regex101.com/r/HNQ743/1

进行测试