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

C# 使用空格和逗号拆分,忽略字符串末尾的单个数字,c#,regex,C#,Regex,这是我的格式: 20130101 1700002497,1.320202,1.3203203,0 我需要将其拆分为数组中的4个值。我使用的正则表达式很简单:\s |\,,但我想忽略最后一个零,因为它在数组中得到第五个值。如何实现这一点?您可以添加一个可选的消费组,该消费组将与字符串末尾的一位数字匹配: [\s,]+(?:[0-9]$)? ^^^^^^^^^^^ [+-]?(?!(?<!^)[0-9]$)[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)? 见

这是我的格式:

20130101 1700002497,1.320202,1.3203203,0

我需要将其拆分为数组中的4个值。我使用的正则表达式很简单:
\s |\,
,但我想忽略最后一个零,因为它在数组中得到第五个值。如何实现这一点?

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

[\s,]+(?:[0-9]$)?
      ^^^^^^^^^^^
[+-]?(?!(?<!^)[0-9]$)[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?

详细信息

  • [\s,]+
    -1个或多个空格或逗号
  • (?:[0-9]$)?
    -可选的非捕获组,与字符串(
    $
    )末尾的单个数字(
    [0-9]
    )匹配

在C#中:

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

[\s,]+(?:[0-9]$)?
      ^^^^^^^^^^^
[+-]?(?!(?<!^)[0-9]$)[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?
[+-]?(?!(?)?
看

在这里,
(?!(?如果1位数字位于字符串的末尾,而不是开头,则前瞻将使匹配失败

C#:


var res=Regex.Matches(s,@“[+-]?(?)?!(?结尾总是一个
0
?还是任何一位数字?它总是一位数字,不确定它是否总是0。因为正则表达式没有完全标准化,所以这个标签的所有问题还应该包括一个标签,指定适用的编程语言或工具。-您使用的是哪种语言?JavaScript?对不起,我很抱歉我使用c#请看下面的答案。这对我没有什么帮助,因为我正在创建一个包含1+百万行的列表,而这个额外的空字符串只是重载。这不是开销,开销是用
Regex.Replace(s,@“[\s,]+\d$,”)删除最后一个数字
在拆分之前。您必须在此处应用post或预处理,因此您可以选择允许或不允许的“开销”。这不会返回OP要求的数据。您应该为您发布的代码提供一些解释。
var res = Regex.Split(s, @"([\d.]{2,})");