Regex da como resultado "El delimitador no debe ser alfanumérico o barra invertida" [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Delimiter no debe ser alfanumérico o barra invertida y preg_match 5 respuestas Solución de problemas "El delimitador no debe ser alfanumérico o barra invertida" al cambiar ereg () a preg_match () [duplicado] 2 respuestas

Tengo este código

function a($menu_item, $remove_link) {
    $pattern = 'class="(.+)"(.+)<a.+>(.+)</a>';
    if($remove_link) {
        return preg_replace($pattern, 'class="$1 selected"$2$3', $menu_item); //<- line 6
    }
    return $menu_item;
}

Que básicamente comprueba si$remove_link es verdadero, y luego elimina el enlace y agrega una definición de clase a$menu_item

Por ejemplo, si uso

$menu_item = '<li class="menuitem first"><a href="index.php">Home</a></li>';
$menu_item = a($menu_item, true);

Debería devolver

<li class="menuitem first selected">Home</li>;

La expresión regular se prueba y funciona en Notepad ++, pero mi función está dando este error:

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in functions.php on line 6

Vi que los patrones de php tienen que estar "delimitados" con barras, así que traté de usarclass="/(.+)"(.+)<a.+>(.+)/</a> en cambio, pero da el mismo error.

¿Qué me estoy perdiendo? ¿Cómo uso los delimitadores correctamente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta