Converting SMILES string into valid sub-strings
While this might work in some cases, I am not sure how well it will work in general. The problem here might be reflected in this statement:

These sub-strings should be subset of the main SMILES string

Not every substring will be a subgraph of the parent molecule. As mentioned in the comments, this seems essentially a fragmentation problem. Take this one of your examples:

smi_sub1= 'C1c1ccccc1Cl'

The reason this won't parse is that it starts with a 'C1' but has no corresponding 'C1' to finish the ring. So it should be 'Cc1ccccc1Cl', which is 1-chloro-2-methylbenzene.
Theoretically, you could take substrings, then post-process them to remove 'disconnected' ring numbers. However, it would make more sense to use proper fragmentation on the molecular graph, and then you would have correct subgraphs anyway, without the need to convert them from SMILES.