我得到一个 15 位的输入字符串,即001230123456789
. 它有两个数字 - 第一个是00123
(最少 1 个非零数字,最多 5 个数字),第二个是0123456789
(最少100000000
10 个数字)。捕获的输出(这些数字)不应包含前导零。
更容易并且可能是唯一正确的方法(在 Python 中)是数组切片和 lstrip():
input = "001230123456789"
output = [(input[:5].lstrip('0'), input[5:].lstrip('0'))]
# ('123', '123456789')
但我有一个任务是用正则表达式做同样的事情。
无论我是否尝试过贪婪的选项,我都坚持留下 zome zeros。我已经以那个结束了:0{0,4}([1-9]\d{0,4})0?([1-9]\d{8,9})
它通过了我 3/6 的测试:
000010111111111 - ('10', '111111111') (should be ('1', '111111111'))
116402151672479 - OK ('11640', '2151672479')
006421651672479 - ('6421', '651672479') (should be ('642', '1651672479'))
712120751672479 - OK ('71212', '751672479')
712121551672479 - OK ('71212', '1551672479')
006400351672479 - ('6400', '351672479') (should be ('640', '351672479'))
有没有办法只用一个正则表达式来做到这一点?
paste.org上带有测试和预期值的完整示例源代码。