import re
text = "50. The SBI considered this sub-item at its resumed 1^st^ meeting and at its 2^nd^ meeting (see para. 46 above). It had before it documents FCCC/CP/2011/7 and Corr.1 and Add.1 and 2, FCCC/SBI/2010/17, FCCC/SBI/2010/26 and FCCC/SBI/2010/MISC.9. A statement was made on behalf of the LDCs."
rx_main = re.compile(r'(FCCC/(?:SBSTA|SBI|CP|KP/CMP|PA/CMA)/\d{4}/(?:INF\.|L\.|MISC\.)?\d+)((?:(?:/|\s+and\s+|\s*,\s*)(?:Add|Rev|Corr)\.\d+(?:(?:\s*,\s*|\s+and\s+)\d+)*)*)')
rx_rev = re.compile(r'(?:Add|Rev|Corr)\.\d+(?:(?:\s*,\s*|\s+and\s+)\d+)*')
rx_split = re.compile(r'\s*,\s*|\s+and\s+')
matches = rx_main.finditer(text)
results = []
for m in matches:
	results.append(m.group(1))
	chunks = [rx_split.split(x) for x in rx_rev.findall(m.group(2))]
	for ch in chunks:
		if len(ch) == 1: # it is simple, just add
			results.append(f"{m.group(1)}/{ch[0]}")
		else:
			name = ch[0].split('.')[0] # Rev, Corr or Add
			for c in ch:
				if '.' in c:
					results.append(f"{m.group(1)}/{c}")
				else:
					results.append(f"{m.group(1)}/{name}.{c}")

print(results)