Correct way to delete double material on object by exact words inside
Match the compiled re

Not sure you will ever get ob.name == patch_list recommend using patch_list.match(str)

&gt;&gt;&gt; "xxxxType1.001" == patch_list
False

&gt;&gt;&gt; patch_list.match("xxxxType1.001")
&lt;re.Match object; span=(0, 9), match='xxxxType1'&gt;

&gt;&gt;&gt; patch_list.match("xxxxType4.001")
&lt;re.Match object; span=(0, 9), match='xxxxType4'&gt;

&gt;&gt;&gt; patch_list.match("xxxxTpe1.001")
&gt;&gt;&gt; patch_list.match("xxxxTpe1.001") is None
True


In question code

import bpy
import re

scene = bpy.context.scene
obj_list = [".*Type%d" % i for i in range(1, 5)]
patch_list = re.compile('|'.join(obj_list))
get_objs = [o for o in scene.objects 
        if  patch_list.match(o.name)]
print(get_objs)


on your edit.  I'm not sure this changes anything.  Below I've simply added a names list of potential names of objects and how they match. 

To repeat I dont think any object name is ever  going to be equal to a compiled re object.  name == patch_list hence your get_objs list will always be empty.

import re

obj_list = [".*Type", ".*AnotherType", ".*Example", ".*AnotherExample"]

namelist = ["SnoopType", "Frog", "DogisAnotherExample.001"]
patch_list = re.compile('|'.join(obj_list))

get_objs = [name for name in namelist if  patch_list.match(name)]

print(get_objs)


results in

['SnoopType', 'DogisAnotherExample.001']