fork download
  1. import re
  2.  
  3. teststring = """
  4. a 6 or 6.4 b
  5. ab 7 or 7 rt
  6. R 7.55t
  7. a r or 5 6
  8. """
  9.  
  10. print('OP submatches', re.findall(r'(?P<var>([a-zA-Z]|(-?\d+(.\d+)?)))', teststring))
  11. # print('OP matches', re.findall(r'(?P<var>([a-zA-Z]|(-?\d+(.\d+)?))) (?(?=[a-zA-Z])(?=(-?\d+(.\d+)?))|(?=[a-zA-Z]))(?P=var)', teststring)
  12. print('Comment matches', re.findall(r'(?P<number1>[\d.]+)\s+(?P<char1>\w(?!\w))|(?P<char2>\w(?!\w))\s+(?P<number2>[\d.]+)', teststring))
  13. print('Answer matches', re.findall(r'([a-zA-Z]\s*(?:-?\d+(.\d+)?)|(?:-?\d+(.\d+)?\s*[a-zA-Z](?![a-zA-Z0-9])))', teststring))
  14. 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))
  15.  
  16.  
Success #stdin #stdout 0.03s 9424KB
stdin
Standard input is empty
stdout
OP submatches [('a', 'a', '', ''), ('6', '6', '6', ''), ('o', 'o', '', ''), ('r', 'r', '', ''), ('6.4', '6.4', '6.4', '.4'), ('b', 'b', '', ''), ('a', 'a', '', ''), ('b', 'b', '', ''), ('7', '7', '7', ''), ('o', 'o', '', ''), ('r', 'r', '', ''), ('7', '7', '7', ''), ('r', 'r', '', ''), ('t', 't', '', ''), ('R', 'R', '', ''), ('7.55', '7.55', '7.55', '.55'), ('t', 't', '', ''), ('a', 'a', '', ''), ('r', 'r', '', ''), ('o', 'o', '', ''), ('r', 'r', '', ''), ('5 6', '5 6', '5 6', ' 6')]
Comment matches [('', '', 'a', '6'), ('', '', 'r', '6.4'), ('', '', 'b', '7'), ('', '', 'r', '7'), ('', '', 'R', '7.55'), ('', '', 'r', '5')]
Answer matches [('a 6', '', ''), ('r 6.4', '.4', ''), ('b 7', '', ''), ('r 7', '', ''), ('R 7.55', '.55', ''), ('r 5 6', ' 6', '')]
Updated answer [('a 6', '', ''), ('6.4 b', '', '.4')]