C#正则表达式分为非零数字,后跟任意数字零

时间:2015-01-17 10:00:34

标签: c# regex

我有一个数字作为字符串" 10009003"我想使用正则表达式将其拆分为始终获得第一个非零数字并包括所有尾随零。然后得到下一个非零数字,后跟其尾随零。如果非零数字没有尾随零,则只需抓住它。

上面的数字字符串应该产生长度/计数3的数组/列表,如下所示 [0] = 1000,[1] = 900,[2] = 3

我试过这段代码;

var someNumberString = "10009003";     
string s = @"[^1-9]+";
string[] strArray = Regex.Split(someNumberString, s);

仅输出以下内容但缺少零; [0] = 1,[1] = 9,[2] = 3

如何让正则表达式包含尾随零?

提前感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

您可以使用此lookbehind和基于前瞻性的正则表达式:

var someNumberString = "10009003";     
string s = @"(?<=[1-9]0*)(?=[1-9])";
string[] strArray = Regex.Split(someNumberString, s);

Console.Write(string.Join(" ", strArray));
//=> 1000 900 3

Online Demo

说明:

  • (?<=[1-9]0*) Lookbehind ) - 如果当前位置前面有非零数字且0或更多零
  • (?=[1-9]) Lookahead ) - 如果当前位置后跟非零数字

答案 1 :(得分:0)

您可以使用下面的regex.Matches功能。

String input = @"10009003";
Regex rgx = new Regex(@"[1-9]+0*");
foreach (Match m in rgx.Matches(input))
Console.WriteLine(m.Groups[0].Value);

[1-9]匹配1到9之间的数字。0*匹配零个或多个0

IDEONE