这是我的格式:
20130101 1700002497,1.320202,1.3203203,0我需要把它分成4个值放在一个数组中。我使用的正则表达式很简单:\s|\,,但我想忽略最后一个零,因为它是进入数组的,还有第五个值。我怎样才能做到这一点呢?
发布于 2017-03-23 19:43:48
您可以添加一个可选的消费组,以匹配字符串末尾的单个数字:
[\s,]+(?:[0-9]$)?
^^^^^^^^^^^请参阅regex demo
详细信息
[\s,]+ -1或更多空格或commas(?:[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]$) lookahead将无法匹配。
C#:
var res = Regex.Matches(s, @"[+-]?(?!(?<!^)[0-9]$)[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?")
.Cast<Match>()
.Select(m => m.Value)
.ToList();发布于 2017-03-23 20:42:08
var res = Regex.Split(s, @"([\d.]{2,})");https://stackoverflow.com/questions/42974992
复制相似问题