我正在从串行端口读取重量和尺寸以破折号分隔的值。
这就是传入数据现在的样子:
-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"]
.
您可以使用后视模式来确保在另一个之前有一个“破折号”(这将被消耗,即添加到匹配值中):
(?:(?<=-)-)?\d+\.\d+
请参阅针对字符串的正则表达式演示--15.0cm-47.8cm--83.1cm: 0.115 kg
:
这里,(?:(?<=-)-)?
是一个可选的非捕获组,它与-
前面有另一个 的a 匹配-
。本\d+\.\d+
场比赛1+数字,.
并再次1个或多个数字。
C#代码:
var results = Regex.Matches(str, @"(?:(?<=-)-)?\d+\.\d+")
.Cast<Match>()
.Select(m => m.Value)
.ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句