code: def datetime_parsing(text, base_date=datetime.now()):
      """
      Extract datetime objects from a string of text.
      """
      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]
      )
  
file_path: ChatterBot/chatterbot/parsing.py
imports: import re
  from datetime import timedelta, datetime
  import calendar
label_desc: Use image node_id 11 for calling a global function with example usage: datetime_parsing(text, base_date) and returns: sorted