code: def _filter_matching_lines(self, city_name, country, matching):
          
          result = list()
  
          # find the right file to scan and extract its lines. Upon "like"
          # matchings, just read all files
          if matching == 'like':
              lines = [l.strip() for l in self._get_all_lines()]
          else:
              filename = self._assess_subfile_from(city_name)
              lines = [l.strip() for l in self._get_lines(filename)]
  
          # look for toponyms matching the specified city_name and according to
          # the specified matching style
          for line in lines:
              tokens = line.split(",")
              # sometimes city names have an inner comma...
              if len(tokens) == 6:
                  tokens = [tokens[0]+','+tokens[1], tokens[2], tokens[3],
                            tokens[4], tokens[5]]
              # check country
              if country is not None:
                  if tokens[4] != country:
                      continue
  
              # check city_name
              if self._city_name_matches(city_name, tokens[0], matching):
                  result.append(tokens)
  
          return result
docs: Returns an iterable whose items are the lists of split tokens of every
          text line matched against the city ID files according to the provided
          combination of city_name, country and matching style
          :param city_name: str
          :param country: str or `None`
          :param matching: str
          :return: list of lists