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] o[strike] 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] y[strike] (usado correctamente) hacer:s ystrike (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 ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta