我有一个字符串:
LRS00969
我想在0上拆分,但前提是该组前面是非数字。我还想在返回的数组中保留0。
到目前为止,我已经做到了这一点:[A-Z](0{1,})
但是,当我在ASP.NET中使用Regex进行拆分时,它会返回string[] { "LRS969" }
。我希望它返回string[] { "LRS", "00", "969" }
。如果我使用(0{1,})
代替它,它会正确分割,但当然它会匹配字符串,其中0也跟随其他数字(例如LRS100969
)
有什么想法吗?
答案 0 :(得分:2)
您可以使用
(?<=[^0-9])(0+)
请参阅regex demo
<强>详情:
(?<=[^0-9])
- 一个正向的后视,需要一个紧靠当前位置左侧的数字以外的字符(0+)
- 将与匹配到第1组(以便Regex.Split
可以将此值粘贴到结果数组中)一个或多个0
个字符。< / LI>
答案 1 :(得分:1)
在其他环境中也适用的替代方案
(?<!\d)(?=0)|(?<=0)(?!0)
匹配&#34;非数字&#34;之间的边界和0
,或,序列中最后0
之后的边界(可能只有一个长)。
由于它只是环顾四周,所以没有匹配的实际字符,因此没有&#34;重新插入分隔符&#34;功能;)