code: def datetime_parsing(text, base_date=datetime.now()):
      
      matches = []
      found_array = []
  
      # Find the position in the string
      for expression, function in regex:
          for match in expression.finditer(text):
              matches.append((match.group(), function(match, base_date), match.span()))
  
      # Wrap the matched text with TAG element to prevent nested selections
      for match, value, spans in matches:
          subn = re.subn(
              '(?!<TAG[^>]*?>)' + match + '(?![^<]*?</TAG>)', '<TAG>' + match + '</TAG>', text
          )
          text = subn[0]
          is_substituted = subn[1]
          if is_substituted != 0:
              found_array.append((match, value, spans))
  
      # To preserve order of the match, sort based on the start position
      return sorted(found_array, key=lambda match: match and match[2][0])
docs: Extract datetime objects from a string of text.