import re
def checkNum(s):
first = ''
if s == '0':
return True
m = re.match(r'\d+$', s) # The string must be all digits
if m:
lim = ''
for i, n in enumerate(s):
lim = lim + n
if re.match(r'{0}\d{{{0}}}$'.format(lim), s):
return True
elif int(s[0:i+1]) > len(s[i+1:]):
return False
print(checkNum('3123')) # Meets the pattern (123 is 3 digit chunk after 3)
print(checkNum('1234567')) # Does not meet the pattern, just 7 digits
print(checkNum('100123456789')) # Meets the condition, 10 is followed with 10 digits
print(checkNum('9123456789')) # Meets the condition, 9 is followed with 9 digits
aW1wb3J0IHJlCmRlZiBjaGVja051bShzKToKCWZpcnN0ID0gJycKCWlmIHMgPT0gJzAnOgoJCXJldHVybiBUcnVlCgltID0gcmUubWF0Y2gocidcZCskJywgcykgIyBUaGUgc3RyaW5nIG11c3QgYmUgYWxsIGRpZ2l0cwoJaWYgbToKCQlsaW0gPSAnJwoJCWZvciBpLCBuIGluIGVudW1lcmF0ZShzKToKCQkJbGltID0gbGltICsgbgoJCQlpZiByZS5tYXRjaChyJ3swfVxke3t7MH19fSQnLmZvcm1hdChsaW0pLCBzKToKCQkJCXJldHVybiBUcnVlCgkJCWVsaWYgaW50KHNbMDppKzFdKSA+IGxlbihzW2krMTpdKToKCQkJCXJldHVybiBGYWxzZQoKcHJpbnQoY2hlY2tOdW0oJzMxMjMnKSkgICAgICAgICAjIE1lZXRzIHRoZSBwYXR0ZXJuICgxMjMgaXMgMyBkaWdpdCBjaHVuayBhZnRlciAzKQpwcmludChjaGVja051bSgnMTIzNDU2NycpKSAgICAgICMgRG9lcyBub3QgbWVldCB0aGUgcGF0dGVybiwganVzdCA3IGRpZ2l0cwpwcmludChjaGVja051bSgnMTAwMTIzNDU2Nzg5JykpICMgTWVldHMgdGhlIGNvbmRpdGlvbiwgMTAgaXMgZm9sbG93ZWQgd2l0aCAxMCBkaWdpdHMKcHJpbnQoY2hlY2tOdW0oJzkxMjM0NTY3ODknKSkgICAjIE1lZXRzIHRoZSBjb25kaXRpb24sIDkgaXMgZm9sbG93ZWQgd2l0aCA5IGRpZ2l0cw==