Negar uma referência anterior em Expressões Regulares

se uma string tiver este formato previsto:

value = "hello and good morning"

Onde as "(aspas) também podem ser '(aspas simples) e o caractere de fechamento (' ou") será o mesmo que o de abertura. Quero corresponder a string entre aspas.

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

(os dois \ s devem permitir espaços próximos ao sinal =)

O primeiro "grupo capturado" (dentro do primeiro par de colchetes) - deve corresponder à citação de abertura que deve ser 'ou "then - devo permitir que qualquer número de caracteres que não seja o que foi capturado no primeiro grupo e espero que o caractere seja capturado no grupo (as aspas).

(a sequência necessária deve ser capturada no segundo grupo de captura
Isso não funcion

Isso faz:

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

mas quero ter certeza de que as aspas de abertura e de fechamento (duplas ou simples) são iguai


EDITA
O objetivo era basicamente obter a tag de abertura de uma âncora que incluísse um determinado nome de classe em seu atributo de classe, e eu queria cobrir a rara ocasião do atributo de classe, incluindo um (') ou um (").

Seguindo todos os conselhos aqui, usei o padrão:

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

Significad:
Encontre um sinal de tag abert
Permitir espaços.
Encontre opalavr uma
Permitir qualquer marca que não seja de fechamento.
Find "class (qualquer espaço) = (qualquer espaço)"
Obtenha aspas iniciais, uma das seguintes opções: ("ou 'ou \" ou \').
Da resposta de Alan Moore: permita caracteres que não sejam as aspas iniciai
find classname
Permitir caracteres que não sejam as aspas iniciai
Encontre a cotação de fechamento que é igual à abertur
Permitir caracteres de etiqueta não revelad
Encontre a tag de fechamento char.