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

问题描述 投票:0回答:2

这是对以下问题的扩展: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)

问题:

但我不知道如何忽略有趣部分前面的任何文字。此外,我不知道如何忽略任何平等的操作员或冒号以及什么都可以而不是他们,而不是提到第一组中的所有可能性。

谁能帮我?提前谢谢了!

c# regex
2个回答
3
投票

在测试.Net正则表达式时应该使用RegexStorm,因为它的行为与Regex101提供的风格不完全相同。

我会用这个正则表达式(demo):

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

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

enter image description here


0
投票

以下适用于我:

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

您可以在以下网址https://regex101.com/r/HNQ743/1上测试它

© www.soinside.com 2019 - 2024. All rights reserved.