正则表达式只匹配冒号后的小数

时间:2017-02-09 18:09:15

标签: c# regex

我真的很亲密,但我不是正则表达专家。这是我的输入字符串。

DCIN  : 11.896V
5V    :  4.988V
Vcom  :  0.008V
5VStby:  4.992V
48V   :  0.042V
48I   :    0mA

我只想冒号后的数值。这就是我到目前为止所拥有的

/[^\D]+\.?[^\D]+/

并且它也抓住了两个48个实例并且没有得到0

2 个答案:

答案 0 :(得分:2)

你的正则表达式要求至少2位数,这就是它与最后一行的零不匹配的原因,并且你的模式中没有限制只能在冒号后匹配。

使用

var res = Regex.Matches(s, @":\s*(\d*\.?\d+)")
     .Cast<Match>()
     .Select(m=>m.Groups[1].Valu‌​e)
     .ToList();

请参阅regex demo

<强>详情:

  • :\s* - 冒号和零个或多个空格
  • (\d*\.?\d+) - 捕获第1组,保存您需要的值:
    • \d* - 零个或多个数字
    • \.? - 一个可选的点
    • \d+ - 一位或多位数。

enter image description here

答案 1 :(得分:1)

我会做this

^[^:]*:\s*(\d+(?:\.\d*)?)