Taken reference Why doesn't [01-12] range work as expected?
m = re.search(r"(\w+)\[([0-9]+)\:([0-9]+)\]", DUNESX[01:44])
or
m = re.search(r"(\w+)\[(0[1-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9])\:([0-9]+)\]", DUNESX[01:44])
or
m = re.search(r"(\w+)\[(0?[1-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9])\:([0-9]+)\]", DUNESX[01:44])
or
m = re.search(r"(\w+)\[([0-1][0-9]+)\:([0-9]+)\]", DUNESX[01:44])
But output from above expressions are
['DUNESX1', 'DUNESX2', 'DUNESX3', 'DUNESX4', 'DUNESX5', 'DUNESX6', 'DUNESX7', 'DUNESX8', 'DUNESX9', 'DUNESX10', 'DUNESX11', 'DUNESX12', 'DUNESX13', 'DUNESX14', 'DUNESX15', 'DUNESX16', 'DUNESX17', 'DUNESX18', 'DUNESX19', 'DUNESX20', 'DUNESX21', 'DUNESX22', 'DUNESX23', 'DUNESX24', 'DUNESX25', 'DUNESX26', 'DUNESX27', 'DUNESX28', 'DUNESX29', 'DUNESX30', 'DUNESX31', 'DUNESX32', 'DUNESX33', 'DUNESX34', 'DUNESX35', 'DUNESX36', 'DUNESX37', 'DUNESX38', 'DUNESX39', 'DUNESX40', 'DUNESX41', 'DUNESX42', 'DUNESX43', 'DUNESX44']
Doesn't provide desired output like
['DUNESX01', 'DUNESX02', 'DUNESX03', 'DUNESX04', 'DUNESX05', 'DUNESX06', 'DUNESX07', 'DUNESX08', 'DUNESX09', 'DUNESX10', 'DUNESX11', 'DUNESX12', 'DUNESX13', 'DUNESX14', 'DUNESX15', 'DUNESX16', 'DUNESX17', 'DUNESX18', 'DUNESX19', 'DUNESX20', 'DUNESX21', 'DUNESX22', 'DUNESX23', 'DUNESX24', 'DUNESX25', 'DUNESX26', 'DUNESX27', 'DUNESX28', 'DUNESX29', 'DUNESX30', 'DUNESX31', 'DUNESX32', 'DUNESX33', 'DUNESX34', 'DUNESX35', 'DUNESX36', 'DUNESX37', 'DUNESX38', 'DUNESX39', 'DUNESX40', 'DUNESX41', 'DUNESX42', 'DUNESX43', 'DUNESX44']
Complete code is
import re
group_list = ['DUNESX[01:44]']
host_list = getgrandchild(group_list)
def getgrandchild(child):
nodelist = []
if child is None:
return
for nodes in child:
print(nodes)
if re.match(r".*(\[[0-1][0-9]+\:[0-9]+\])", nodes):
m = re.search(r"(\w+)\[([0-9]+)\:([0-9]+)\]", nodes)
lb = int(m.group(2))
ub = int(m.group(3))
for i in range(lb, ub+1):
nodelist.append(m.group(1)+str(i))
elif re.match(r"(\w+)", nodes):
m = re.search(r"(\w+)", nodes)
nodelist.append(m.group(1))