import re
text = "X4IitemX6Nabc123"
rx1 = r'^X(\d+)'
m1 = re.search(rx1, text)
if m1:
  rx2 = fr'^X(?P<namelen>\d+)I(?P<name>.{{{m1.group(1)}}})X(?P<numlen>\d+)N(?P<num>.+)$'
  if re.search(rx2, text):
    print(text, '-> MATCH!')
  else:
  	print(text, '-> FAIL!')
else:
  print(text, '-> FAIL!')