code: def text_till(self, strings, keep_index=False):
          
          if isinstance(strings, str):
              strings = [strings]
  
          original_index = self.index
  
          text = ""
          matched_string = ""
  
          while self.more:
              test_against = self.characters(len(max(strings, key=len)))
              for string in strings:
                  if string.startswith("^"):
                      if test_against[0] in (" ", "\t", "\n", ")", "(") and test_against[1:].startswith(string[1:]):
                          matched_string = string
                          break
                  if test_against.startswith(string):
                      matched_string = string
                      break
  
              if matched_string:
                  break
  
              text += self.pop()
  
          self += 1
  
          if keep_index:
              self.index = original_index
  
          return (text, matched_string)
docs: Returns all text till it encounters the given string (or one of the given strings)