簡體   English   中英

C#正則表達式拆分為非零數字,后跟任意數字零

[英]C# regex split for A non-zero digit followed by an arbitrary number of zero

我有一個數字作為字符串“ 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

我如何使正則表達式包含尾隨零?

先謝謝您的幫助:)

您可以使用基於lookbehind和lookahead的正則表達式:

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

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

在線演示

說明:

  • (?<=[1-9]0*)向后看 )-如果當前位置前面有一個非零數字和0個或多個零
  • (?=[1-9])前瞻 )-如果當前位置后跟一個非零數字

您可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM