codingBat plusOut usando regex

Esto es similar a mis esfuerzos anteriores (wordEnds yrepeatEnd): como ejercicio mental, quiero resolver este problema de juguete usando solo expresiones regulares.

Descripción de codingbat.com:

Dada una cadena y una cadena de palabras no vacía, devuelve una versión de la cadena original donde todos los caracteres han sido reemplazados por más ("+"), excepto por las apariencias de la cadena de palabras que se conservan sin cambios.

plusOut("12xy34", "xy") → "++xy++"
plusOut("12xy34", "1") → "1+++++"
plusOut("12xy34xyabcxy", "xy") → "++xy++xy+++xy"

No se menciona si se permite o no la superposición (por ejemplo, qué esplusOut("+xAxAx+", "xAx")?), pero mi solución no regex no maneja la superposición y pasa, por lo que supongo que podemos suponer ocurrencias no superpuestas deword si lo hace más simple (¡puntos de bonificación si proporciona soluciones para ambas variantes!).

En cualquier caso, me gustaría resolver esto usando expresiones regulares (del mismo estilo que hice antes con los otros dos problemas), pero estoy absolutamente perplejo. Ni siquiera tengo nada que mostrar, porque no tengo nada que funcione.

Entonces, veamos qué inventa la comunidad stackoverflow.

Respuestas a la pregunta(4)

Su respuesta a la pregunta