Это не продуманный подход, но вы, вероятно, можете
- Узнать, соответствует ли ваш файл шаблону
>>> import re
>>> s = '../../../source_code/google_test/test/test_StateMachine.cpp'
KeyboardInterrupt
>>> match = re.search(r"test_[a-zA-Z0-9]*\.cpp", s)
>>> match.start(0)
38
>>> s[38:]
'test_StateMachine.cpp'
>>>
Затем сформируйте имя файла для файлов, которые должны быть отфильтрованы
>>> filename_to_filter = 'mock_' + s[38 + len('test_'):]
>>> filename_to_filter
'mock_StateMachine.cpp'
и, наконец, отфильтруйте список:
>>> files_list = []
>>> files_list.append('../../../source_code/google_test/test/test_StateMachine.cpp')
>>> files_list.append('../../../source_code/google_test/test/mock_StateMachine.cpp')
>>> files_list.append('../../../source_code/google_test/test/mock_StateMachine1.cpp')
>>> files_list.append('../../../source_code/google_test/test/mock_StateMachine2.cpp')
>>> file_lists_to_filter = []
>>> for l in files_list:
... m = re.search(r"test_[a-zA-Z0-9]*\.cpp", l)
... if m:
... filename_to_filter = 'mock_' + s[m.start(0) + len('test_'):]
... file_lists_to_filter.append(filename_to_filter)
...
>>> files_list = [x for x in files_list if not x.endswith(filename_to_filter)]
>>> files_list
['../../../source_code/google_test/test/test_StateMachine.cpp', '../../../source_code/google_test/test/mock_StateMachine1.cpp', '../../../source_code/google_test/test/mock_StateMachine2.cpp']
(последняя часть, безусловно, может быть оптимизирована)