def filter(self, filters):
        """
        Pass in a list of tuples where each tuple represents one filter.
        The first element of the tuple is the name of the column to
        filter on and the second value is a regular expression which
        each value in that column will be compared against.  If the
        regular expression matches the value in that column, that
        lineitem will be included in the new Costs object returned.

        Example:

            filters=[('ProductName', '.*DynamoDB')]

        This filter would find all lineitems whose ``ProductName``
        column contains values that end in the string ``DynamoDB``.
        """
        subset = Costs(self._columns)
        filters = [(col, re.compile(regex)) for col, regex in filters]
        for lineitem in self._lineitems:
            for filter in filters:
                if filter[1].search(lineitem[filter[0]]) is None:
                    continue
                subset.add(lineitem)
        return subset
Pass in a list of tuples where each tuple represents one filter.
        The first element of the tuple is the name of the column to
        filter on and the second value is a regular expression which
        each value in that column will be compared against.  If the
        regular expression matches the value in that column, that
        lineitem will be included in the new Costs object returned.

        Example:

            filters=[('ProductName', '.*DynamoDB')]

        This filter would find all lineitems whose ``ProductName``
        column contains values that end in the string ``DynamoDB``.