Все что приходит на ум(на Javascript):
str='AIhfgfhhfOBI78789OABAB'
str.replace(/(I[^O]*O|A[^B]*B)/g, '__$1__')
.replace(/__I[^O]*O__/g, '')
.replace(/__(A[^B]*B)__/g, '$1')
str='scripthjkk45{hfgfh}111hf/script7787777{78789}script/script'
str.replace(/\/script/g, '►')
.replace(/(\{[^}]*\}|script[^►]*►)/g, '__$1__')
.replace(/__\{[^}]*\}__/g, '')
.replace(/__(script[^►]*►)__/g, '$1')
.replace(/►/g, '/script')