PHP / Regex: regex simple para bbcode [s] o [strike] no funciona

Para un analizador de bbcode tonto, quería agregar dos definiciones en una, mi definición original era esta para preg_replace:

'#\[s\](.*?)\[/s\]#si', '<strike>\\1</strike>'

Y esto funciona, deseé que el usuario pudiera usar cualquiera[s]&nbsp;o[strike]&nbsp;para iniciar el texto en ese formato, así que, naturalmente, agregué algo como esto pensando que funcionaría:

'#\[(s|strike)\](.*?)\[/(s|strike)\]#si', '<strike>\\1</strike>'

Desafortunadamente eso falla, en lugar de lo que cabría esperar, ambos[s]&nbsp;y[strike]&nbsp;(usado correctamente) hacer:s&nbsp;ystrike&nbsp;(mi descuento es correcto para mostrar su resultado real, muestra s o huelga independientemente de lo que haya dentro)

¿Por qué reemplaza el texto interno con el nombre de la etiqueta? ¿Es mi problema agregar paréntesis alrededor del s | strike? Probablemente estoy haciendo todo esto mal ...