import re
subject = 'a1,a2,a3,a4,{_some_length_not_known_in_advance,a6}'
regex = re.compile(r'{[^}]*}|(,)')
# put Group 1 captures in a list
matches = [group for group in re.findall(regex, subject) if group]
# How many matches are there?
print("\n" + "*** Number of Matches ***")
print(len(matches))
# What are all the matches?
print("\n" + "*** Matches ***")
if len(matches)>0:
for match in matches:
print (match)
# Replace the matches
def myreplacement(m):
if m.group(1):
return "SplitHere"
else:
return m.group(0)
replaced = regex.sub(myreplacement, subject)
print("\n" + "*** Replacements ***")
print(replaced)
# Split
# Start by replacing by something distinctive as above,
# then split.
splits = replaced.split('SplitHere')
print("\n" + "*** Splits ***")
for split in splits:
print (split)
aW1wb3J0IHJlCnN1YmplY3QgPSAnYTEsYTIsYTMsYTQse19zb21lX2xlbmd0aF9ub3Rfa25vd25faW5fYWR2YW5jZSxhNn0nCnJlZ2V4ID0gcmUuY29tcGlsZShyJ3tbXn1dKn18KCwpJykKIyBwdXQgR3JvdXAgMSBjYXB0dXJlcyBpbiBhIGxpc3QKbWF0Y2hlcyA9IFtncm91cCBmb3IgZ3JvdXAgaW4gcmUuZmluZGFsbChyZWdleCwgc3ViamVjdCkgaWYgZ3JvdXBdCgojIEhvdyBtYW55IG1hdGNoZXMgYXJlIHRoZXJlPwpwcmludCgiXG4iICsgIioqKiBOdW1iZXIgb2YgTWF0Y2hlcyAqKioiKQpwcmludChsZW4obWF0Y2hlcykpCgojIFdoYXQgYXJlIGFsbCB0aGUgbWF0Y2hlcz8KcHJpbnQoIlxuIiArICIqKiogTWF0Y2hlcyAqKioiKQppZiBsZW4obWF0Y2hlcyk+MDoKCWZvciBtYXRjaCBpbiBtYXRjaGVzOgoJICAgIHByaW50IChtYXRjaCkKCQkKIyBSZXBsYWNlIHRoZSBtYXRjaGVzCmRlZiBteXJlcGxhY2VtZW50KG0pOgogICAgaWYgbS5ncm91cCgxKToKICAgICAgICByZXR1cm4gIlNwbGl0SGVyZSIKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIG0uZ3JvdXAoMCkKcmVwbGFjZWQgPSByZWdleC5zdWIobXlyZXBsYWNlbWVudCwgc3ViamVjdCkKcHJpbnQoIlxuIiArICIqKiogUmVwbGFjZW1lbnRzICoqKiIpCnByaW50KHJlcGxhY2VkKQoKIyBTcGxpdAojIFN0YXJ0IGJ5IHJlcGxhY2luZyBieSBzb21ldGhpbmcgZGlzdGluY3RpdmUgYXMgYWJvdmUsCiMgdGhlbiBzcGxpdC4Kc3BsaXRzID0gcmVwbGFjZWQuc3BsaXQoJ1NwbGl0SGVyZScpCnByaW50KCJcbiIgKyAiKioqIFNwbGl0cyAqKioiKQpmb3Igc3BsaXQgaW4gc3BsaXRzOgoJICAgIHByaW50IChzcGxpdCk=