code: def _find_and_replace(self, date_string, captures):
          
          # add timezones to replace
          cloned_replacements = copy.copy(REPLACEMENTS)  # don't mutate
          for tz_string in captures.get("timezones", []):
              cloned_replacements.update({tz_string: " "})
  
          date_string = date_string.lower()
          for key, replacement in cloned_replacements.items():
              # we really want to match all permutations of the key surrounded by whitespace chars except one
              # for example: consider the key = 'to'
              # 1. match 'to '
              # 2. match ' to'
              # 3. match ' to '
              # but never match r'(\s|)to(\s|)' which would make 'october' > 'ocber'
              date_string = re.sub(
                  r"(^|\s)" + key + r"(\s|$)",
                  replacement,
                  date_string,
                  flags=re.IGNORECASE,
              )
  
          return date_string, self._pop_tz_string(sorted(captures.get("timezones", [])))
docs: :warning: when multiple tz matches exist the last sorted capture will trump
          :param date_string:
          :return: date_string, tz_string