Negando una referencia inversa en expresiones regulares

si una cadena tiene este formato predicho:

value = "hello and good morning"

Donde el "(comillas) también podría ser '(comilla simple), y el carácter de cierre (' o") será el mismo que el de apertura. Quiero hacer coincidir la cadena entre comillas.

\bvalue\s*=\s*(["'])([^\1]*)\1

(los dos \ s deben permitir cualquier espacio cerca del signo =)

El primer "grupo capturado" (dentro del primer par de paréntesis) - debe coincidir con la cita de apertura que debe ser 'o "entonces - se supone que debo permitir cualquier número de caracteres que no sean los capturados en el primer grupo , y luego espero el personaje capturado en el grupo (las comillas adjuntas).

(la cadena requerida debe capturarse en el segundo grupo de captura).
Esto no funciona sin embargo.

Esto hace

\bvalue\s*=\s*(['"])([^"']*)["']

pero quiero asegurarme de que tanto la comilla de apertura como la de cierre (doble o simple) sean las mismas.


EDITA
ásicamente, el objetivo era obtener la etiqueta de apertura de un ancla que tiene un cierto nombre de clase incluido dentro de su atributo de clase, y quería cubrir la rara ocasión del atributo de clase que incluye un (') o un (").

Siguiendo todos los consejos aquí, utilicé el patrón:

<\s*\ba\b[^<>]+\bclass\s*=\s*("|'|\\"|\\')(?:(?!\1).)*\s*classname\s*(?:(?!\1).)*\1[^>]*>

Sentid:
Encuentre una señal de etiqueta abierta.
Permitir cualquier espacio.
Encuentra elpalabr un
Permitir cualquier etiqueta que no sea de cierre.
Buscar "clase (cualquier espacio) = (cualquier espacio)"
Obtenga comillas de apertura, una de las siguientes: ("o 'o \" o \').
De la respuesta de Alan Moore: Permitir cualquier carácter que no sea la comilla de apertura.
find classname
Permitir los caracteres que no sean las comillas iniciales.
Encuentre la cotización de cierre que es igual a la apertura.
Permitir cualquier carácter de etiqueta de cierre.
Encuentre la etiqueta de cierre char.