首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用空格和逗号拆分,忽略字符串末尾的单个数字

使用空格和逗号拆分,忽略字符串末尾的单个数字
EN

Stack Overflow用户
提问于 2017-03-23 19:41:27
回答 2查看 120关注 0票数 1

这是我的格式:

代码语言:javascript
复制
20130101 1700002497,1.320202,1.3203203,0

我需要把它分成4个值放在一个数组中。我使用的正则表达式很简单:\s|\,,但我想忽略最后一个零,因为它是进入数组的,还有第五个值。我怎样才能做到这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2017-03-23 19:43:48

您可以添加一个可选的消费组,以匹配字符串末尾的单个数字:

代码语言:javascript
复制
[\s,]+(?:[0-9]$)?
      ^^^^^^^^^^^

请参阅regex demo

详细信息

  • [\s,]+ -1或更多空格或commas
  • (?:[0-9]$)? -与字符串($).

末尾的单个数字([0-9])匹配的可选非捕获组

在C#中:

代码语言:javascript
复制
var res = Regex.Split(s, @"[\s,]+(?:[0-9]$)?").Where(m => !string.IsNullOrEmpty(m));

一种匹配方法,用于匹配除字符串末尾的单个数字之外的所有数字:

代码语言:javascript
复制
[+-]?(?!(?<!^)[0-9]$)[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?

请参阅regex demo

在这里,如果1位数字位于字符串的末尾,而不是字符串的开头,则(?!(?<!^)[0-9]$) lookahead将无法匹配。

C#:

代码语言:javascript
复制
var res = Regex.Matches(s, @"[+-]?(?!(?<!^)[0-9]$)[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?")
    .Cast<Match>()
    .Select(m => m.Value)
    .ToList();
票数 1
EN

Stack Overflow用户

发布于 2017-03-23 20:42:08

代码语言:javascript
复制
var res = Regex.Split(s, @"([\d.]{2,})");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42974992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档