code: def string_match(self, datastring, findstring, flags=None):
          
  
          if type(datastring) is IntType:  # Empty cell
              return None
  
          if flags is None:
              flags = []
  
          if "REG_EXP" in flags:
              match = re.search(findstring, datastring)
              if match is None:
                  pos = -1
              else:
                  pos = match.start()
          else:
              if "MATCH_CASE" not in flags:
                  datastring = datastring.lower()
                  findstring = findstring.lower()
  
              if "WHOLE_WORD" in flags:
                  pos = -1
                  matchstring = r'\b' + findstring + r'+\b'
                  for match in re.finditer(matchstring, datastring):
                      pos = match.start()
                      break  # find 1st occurrance
              else:
                  pos = datastring.find(findstring)
  
          if pos == -1:
              return None
          else:
              return pos
docs: Returns position of findstring in datastring or None if not found.
          Flags is a list of strings. Supported strings are:
           * "MATCH_CASE": The case has to match for valid find
           * "WHOLE_WORD": The word has to be surrounded by whitespace characters
                           if in the middle of the string
           * "REG_EXP":    A regular expression is evaluated.