import re
REMOVE_LIST = ["(A mass = 200 GeV)", "More+[fun]+text"]
remove_with_boundaries = '|'.join([re.escape(x) for x in REMOVE_LIST if re.match(r'\w', x) and re.search(r'\w$', x)])
remove_with_no_boundaries = '|'.join([re.escape(x) for x in REMOVE_LIST if not re.match(r'\w', x) and not re.search(r'\w$', x)])
remove_with_right_boundaries = '|'.join([re.escape(x) for x in REMOVE_LIST if not re.match(r'\w', x) and re.search(r'\w$', x)])
remove_with_left_boundaries = '|'.join([re.escape(x) for x in REMOVE_LIST if re.match(r'\w', x) and not re.search(r'\w$', x)])
ptrn = ''
if len(remove_with_boundaries) > 0:
ptrn += r'\b(?:'+remove_with_boundaries+r')\b'
if len(remove_with_left_boundaries) > 0:
ptrn += r'|\b(?:' + remove_with_left_boundaries + r')'
if len(remove_with_right_boundaries) > 0:
ptrn += r'|(?:' + remove_with_right_boundaries + r')\b'
if len(remove_with_no_boundaries) > 0:
ptrn += r'|(?:' + remove_with_no_boundaries + r')'
print ptrn
regex = re.compile(ptrn)
print regex.findall("Now, (A mass = 200 GeV) and More+[fun]+text inside")
aW1wb3J0IHJlClJFTU9WRV9MSVNUID0gWyIoQSBtYXNzID0gMjAwIEdlVikiLCAiTW9yZStbZnVuXSt0ZXh0Il0KCnJlbW92ZV93aXRoX2JvdW5kYXJpZXMgPSAnfCcuam9pbihbcmUuZXNjYXBlKHgpIGZvciB4IGluIFJFTU9WRV9MSVNUIGlmIHJlLm1hdGNoKHInXHcnLCB4KSBhbmQgcmUuc2VhcmNoKHInXHckJywgeCldKQpyZW1vdmVfd2l0aF9ub19ib3VuZGFyaWVzID0gJ3wnLmpvaW4oW3JlLmVzY2FwZSh4KSBmb3IgeCBpbiBSRU1PVkVfTElTVCBpZiBub3QgcmUubWF0Y2gocidcdycsIHgpIGFuZCBub3QgcmUuc2VhcmNoKHInXHckJywgeCldKQpyZW1vdmVfd2l0aF9yaWdodF9ib3VuZGFyaWVzID0gJ3wnLmpvaW4oW3JlLmVzY2FwZSh4KSBmb3IgeCBpbiBSRU1PVkVfTElTVCBpZiBub3QgcmUubWF0Y2gocidcdycsIHgpIGFuZCByZS5zZWFyY2gocidcdyQnLCB4KV0pCnJlbW92ZV93aXRoX2xlZnRfYm91bmRhcmllcyA9ICd8Jy5qb2luKFtyZS5lc2NhcGUoeCkgZm9yIHggaW4gUkVNT1ZFX0xJU1QgaWYgcmUubWF0Y2gocidcdycsIHgpIGFuZCBub3QgcmUuc2VhcmNoKHInXHckJywgeCldKQoKcHRybiA9ICcnCmlmIGxlbihyZW1vdmVfd2l0aF9ib3VuZGFyaWVzKSA+IDA6CglwdHJuICs9IHInXGIoPzonK3JlbW92ZV93aXRoX2JvdW5kYXJpZXMrcicpXGInCmlmIGxlbihyZW1vdmVfd2l0aF9sZWZ0X2JvdW5kYXJpZXMpID4gMDoKCXB0cm4gKz0gcid8XGIoPzonICsgcmVtb3ZlX3dpdGhfbGVmdF9ib3VuZGFyaWVzICsgcicpJwppZiBsZW4ocmVtb3ZlX3dpdGhfcmlnaHRfYm91bmRhcmllcykgPiAwOgoJcHRybiArPSByJ3woPzonICsgcmVtb3ZlX3dpdGhfcmlnaHRfYm91bmRhcmllcyArIHInKVxiJwppZiBsZW4ocmVtb3ZlX3dpdGhfbm9fYm91bmRhcmllcykgPiAwOgoJcHRybiArPSByJ3woPzonICsgcmVtb3ZlX3dpdGhfbm9fYm91bmRhcmllcyArIHInKScKCnByaW50IHB0cm4KcmVnZXggPSByZS5jb21waWxlKHB0cm4pCnByaW50IHJlZ2V4LmZpbmRhbGwoIk5vdywgKEEgbWFzcyA9IDIwMCBHZVYpIGFuZCBNb3JlK1tmdW5dK3RleHQgaW5zaWRlIikK