这是我的格式:
20130101 1700002497,1.320202,1.3203203,0
我需要将其拆分为数组中的4个值。我正在使用的正则表达式很简单:\s|\,
但我想忽略最后的零,因为它进入数组以及第5个值。我怎样才能做到这一点?
答案 0 :(得分:1)
您可以添加一个可选的消费组,该消费组将匹配字符串末尾的单个数字:
[\s,]+(?:[0-9]$)?
^^^^^^^^^^^
请参阅regex demo
<强>详情:
[\s,]+
- 一个或多个空格或逗号(?:[0-9]$)?
- 一个可选的非捕获组,匹配字符串末尾([0-9]
)的单个数字($
)。在C#中:
var res = Regex.Split(s, @"[\s,]+(?:[0-9]$)?").Where(m => !string.IsNullOrEmpty(m));
匹配所有数字但匹配字符串末尾的单个数字的方法:
[+-]?(?!(?<!^)[0-9]$)[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?
请参阅regex demo。
如果1位数字在最后,(?!(?<!^)[0-9]$)
前瞻将使匹配失败,并且不在字符串的开头。
C#:
var res = Regex.Matches(s, @"[+-]?(?!(?<!^)[0-9]$)[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?")
.Cast<Match>()
.Select(m => m.Value)
.ToList();
答案 1 :(得分:0)
var res = Regex.Split(s, @"([\d.]{2,})");