2 deleted 83 characters in body
source | link

Python, 7567 bytes

lambda s:eval("s"+(""s"+".replace('%s','')"*4%('[]'[],'()','{}','<>'))*len(s))==''

Generates and evals an expression that looks like

s.replace('[]','').replace('()','').replace('{}','').replace('<>','').replace('[]','').replace('()','').replace('{}','').replace('<>','')

and checks if the result is empty. 

Using re.sub came close (75Sp3000 saved 8 bytes). I didn't see a nice way to put it in a by pointing out that lambda[],(),{} can be subbed in without quotes because they're Python objects, either recursively or via an eval chainand that two parens were unneeded.

import re
def f(s):
 for _ in s:s=re.sub('{}|<>|\(\)|\[\]','',s)
 return''==s

Python, 75 bytes

lambda s:eval("s"+(".replace('%s','')"*4%('[]','()','{}','<>'))*len(s))==''

Generates and evals an expression that looks like

s.replace('[]','').replace('()','').replace('{}','').replace('<>','').replace('[]','').replace('()','').replace('{}','').replace('<>','')

and checks if the result is empty.

Using re.sub came close (75 bytes). I didn't see a nice way to put it in a lambda, either recursively or via an eval chain.

import re
def f(s):
 for _ in s:s=re.sub('{}|<>|\(\)|\[\]','',s)
 return''==s

Python, 67 bytes

lambda s:eval("s"+".replace('%s','')"*4%([],(),{},'<>')*len(s))==''

Generates and evals an expression that looks like

s.replace('[]','').replace('()','').replace('{}','').replace('<>','').replace('[]','').replace('()','').replace('{}','').replace('<>','')

and checks if the result is empty. 

Sp3000 saved 8 bytes by pointing out that [],(),{} can be subbed in without quotes because they're Python objects, and that two parens were unneeded.

1
source | link

Python, 75 bytes

lambda s:eval("s"+(".replace('%s','')"*4%('[]','()','{}','<>'))*len(s))==''

Generates and evals an expression that looks like

s.replace('[]','').replace('()','').replace('{}','').replace('<>','').replace('[]','').replace('()','').replace('{}','').replace('<>','')

and checks if the result is empty.

Using re.sub came close (75 bytes). I didn't see a nice way to put it in a lambda, either recursively or via an eval chain.

import re
def f(s):
 for _ in s:s=re.sub('{}|<>|\(\)|\[\]','',s)
 return''==s