<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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