import re

teststring = """
a 6 or 6.4 b
ab 7 or 7 rt 
R 7.55t
a r or 5 6
"""

print('OP submatches', re.findall(r'(?P<var>([a-zA-Z]|(-?\d+(.\d+)?)))', teststring))
# print('OP matches', re.findall(r'(?P<var>([a-zA-Z]|(-?\d+(.\d+)?))) (?(?=[a-zA-Z])(?=(-?\d+(.\d+)?))|(?=[a-zA-Z]))(?P=var)', teststring)
print('Comment matches', re.findall(r'(?P<number1>[\d.]+)\s+(?P<char1>\w(?!\w))|(?P<char2>\w(?!\w))\s+(?P<number2>[\d.]+)', teststring))
print('Answer matches', re.findall(r'([a-zA-Z]\s*(?:-?\d+(.\d+)?)|(?:-?\d+(.\d+)?\s*[a-zA-Z](?![a-zA-Z0-9])))', teststring))
print('Updated answer', re.findall(r'((?<![a-zA-Z0-9])[a-zA-Z]\s+-?\d+(.\d+)?(?![a-zA-Z.0-9])|(?<![a-zA-Z.0-9])-?\d+(.\d+)?\s+[a-zA-Z](?![a-zA-Z0-9]))', teststring))

