C#Split Regex:跟随字符时捕获一个组

时间:2017-06-19 11:05:15

标签: asp.net regex

我有一个字符串: LRS00969

我想在0上拆分,但前提是该组前面是非数字。我还想在返回的数组中保留0。

到目前为止,我已经做到了这一点:[A-Z](0{1,})

但是,当我在ASP.NET中使用Regex进行拆分时,它会返回string[] { "LRS969" }。我希望它返回string[] { "LRS", "00", "969" }。如果我使用(0{1,})代替它,它会正确分割,但当然它会匹配字符串,其中0也跟随其他数字(例如LRS100969

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用

(?<=[^0-9])(0+)

请参阅regex demo

<强>详情:

  • (?<=[^0-9]) - 一个正向的后视,需要一个紧靠当前位置左侧的数字以外的字符
  • (0+) - 将匹配到第1组(以便Regex.Split可以将此值粘贴到结果数组中)一个或多个0个字符。< / LI>

enter image description here

答案 1 :(得分:1)

在其他环境中也适用的替代方案

(?<!\d)(?=0)|(?<=0)(?!0)

匹配&#34;非数字&#34;之间的边界和0,序列中最后0之后的边界(可能只有一个长)。

由于它只是环顾四周,所以没有匹配的实际字符,因此没有&#34;重新插入分隔符&#34;功能;)

See it here at REGEXSTORM.net

and here at regex101