我真的很亲密,但我不是正则表达专家。这是我的输入字符串。
DCIN : 11.896V
5V : 4.988V
Vcom : 0.008V
5VStby: 4.992V
48V : 0.042V
48I : 0mA
我只想冒号后的数值。这就是我到目前为止所拥有的
/[^\D]+\.?[^\D]+/
并且它也抓住了两个48个实例并且没有得到0
答案 0 :(得分:2)
你的正则表达式要求至少2位数,这就是它与最后一行的零不匹配的原因,并且你的模式中没有限制只能在冒号后匹配。
使用
var res = Regex.Matches(s, @":\s*(\d*\.?\d+)")
.Cast<Match>()
.Select(m=>m.Groups[1].Value)
.ToList();
请参阅regex demo
<强>详情:
:\s*
- 冒号和零个或多个空格(\d*\.?\d+)
- 捕获第1组,保存您需要的值:
\d*
- 零个或多个数字\.?
- 一个可选的点\d+
- 一位或多位数。答案 1 :(得分:1)
我会做this
^[^:]*:\s*(\d+(?:\.\d*)?)