以破折号分隔的字符串中的正值和正值的正则表达式

时间:2017-04-04 12:15:05

标签: c# regex match

我正在从串口读取重量和尺寸破折号值。

这就是传入数据现在的样子:

-15.0cm-47.8cm-83.1cm:  0.115 kg

这是我的模式

@"(\d+\.\d+)"

但是,有时其中一个值也可能是负值,例如

--15.0cm-47.8cm--83.1cm: 0.115 kg.

我的问题是如何同时获得负值和正值?我对上述字符串的预期输出为[ "-15.0", "47.8", "-83.1", "0.115"]

1 个答案:

答案 0 :(得分:1)

你可以使用一个lookbehind模式来确保有一个"破折号"在另一个之前(将被消耗,即添加到匹配值):

(?:(?<=-)-)?\d+\.\d+

针对--15.0cm-47.8cm--83.1cm: 0.115 kg字符串{/ 3>}查看regex demo

enter image description here

此处,(?:(?<=-)-)?是一个可选的非捕获组,匹配前面带有另一个-的{​​{1}}。 -匹配1位数字\d+\.\d+,再次匹配1位或更多位数。

C#代码:

.