Отрицание обратной ссылки в регулярных выражениях

если строка имеет этот прогнозируемый формат:

value = "hello and good morning"

Где "(цитаты) также могут быть" (одинарные кавычки), а закрывающий символ ('или ") будет таким же, как и начальный. Я хочу сопоставить строку между кавычками.

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

(две \ s разрешают пробелы возле знака =)

Первая «захваченная группа» (внутри первой пары скобок) - должна соответствовать открывающей кавычке, которая должна быть либо «, либо» затем - я должен разрешить любое количество символов, которые не были захвачены в первой группе, и тогда я ожидаю, что символ, захваченный в группе (кавычки).

(требуемая строка должна быть записана во второй группе захвата).
Это не работает, хотя.

Это делает:

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

но я хочу убедиться, что и кавычка открытия и закрытия (двойная или одинарная) одинаковы.


РЕДАКТИРОВАТЬ
Цель состояла в том, чтобы в основном получить открывающий тег якоря, у которого есть определенное имя класса, включенное в его атрибут класса, и я хотел охватить редкий случай атрибута класса, включая (') или (()).

Следуя всем советам здесь, я использовал шаблон:

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

Смысл:
Найдите метку-открытый знак.
Разрешить любые пробелы.
Найдислово а.
Разрешить любой не закрывающий тег.
Найти "класс (любые пробелы) = (любые пробелы)"
Получить вводные кавычки, одно из следующих: ("или" или \ "или \ ').
Из ответа Алана Мура: разрешите любые символы, которые не являются открывающими кавычками.
найти имя класса
Разрешить любые символы, которые не являются открывающими кавычками.
Найдите заключительную цитату, которая совпадает с открытием.
Разрешить любые символы раскрывающихся тегов.
Найдите закрывающий тег char.

Ответы на вопрос(3)

Ваш ответ на вопрос