我想捕获最后一次出现零之后1到9之间的所有数字,除了最后一位数字中的零。我尝试了这个模式,它似乎不起作用。
第一个月
数据
0100179835
3000766774
1500396843
1500028408
1508408637
3105230262
3005228061
3105228407
3105228940
0900000000
2100000000
0800000000
1000000001
2200000001
0800000001
1300000001
1000000002
2200000002
0800000002
1300000002
1000000003
2200000003
0800000003
1300000003
1000000004
2200000004
0800000004
1300000004
1000000005
2200000005
0800000005
1300000005
1000000006
2300000006
0800000006
0900000006
1000000007
2300000007
0900000007
0800000007
1000000008
2300000008
0900000008
0800000008
1100000009
2300000009
0900000009
0800000009
1000005217
2000000429
1100000020
1000005000
3000000070
2000000400
1000020000
3000200000
2906000000
预期结果
179835
766774
396843
28408
8408637
5230262
5228061
5228407
5228940
0
0
0
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
4
5
5
5
5
6
6
6
6
7
7
7
7
8
8
8
8
9
9
9
9
5217
429
20
5000
70
400
20000
200000
6000000
3条答案
按热度按时间v7pvogib1#
您可以锚定字符串的结尾,并将非零数字与可选的尾随零匹配。请确保至少有一个匹配数字具有正的前瞻模式:
演示:https://regex101.com/r/uggV37/2
yuvru6vn2#
要获得所需结果:
(?:
备选项的非捕获组^
字符串开始0*[1-9]+0*
在可选零之间匹配1+数字1 - 9\K0
忽略目前匹配的内容,然后匹配零|
或0\K
匹配零并忽略到目前为止匹配的内容[1-9]+
匹配1+数字1 - 9(?:
备选项的非捕获组0[1-9]*
匹配零和可选数字1 - 9|
或0+
匹配1+零)?
关闭非捕获组)
关闭非捕获组$
字符串结束参见regex demo。
p1tboqfb3#
每行匹配1项:
每行匹配多个项目: