если строка имеет этот предсказанный формат:
value = "hello and good morning"
Где "(цитаты) также могут быть" (одинарная кавычка), а закрытие char ('или ") будет таким же, как и открытие. Я хочу совместить строку между кавычками.
\bvalue\s*=\s*(["'])([^\1]*)\1
(два\s должны допускать любые пробелы вблизи знака =)
Первая "захваченная группа" (внутри первой пары скобок) - должен соответствовать котировке открытия, которая должна быть либо "или" , затем - я должен разрешить любое количество символов, которые не были захвачены в первой группе, а затем я ожидаю, что персонаж, захваченный в группе (заключая кавычки).
(требуемая строка должна быть записана во второй группе захвата).
Однако это не работает.
Это делает:
\bvalue\s*=\s*(['"])([^"']*)["']
но я хочу убедиться, что и кавычки открытия и закрытия (как двойные, так и одиночные) совпадают.
РЕДАКТИРОВАТЬ
Цель состояла в основном в том, чтобы получить открывающий тег якоря, который имеет определенное имя класса, включенное в его атрибут класса, и я хотел осветить редкий случай атрибута класса, включая (') или().
Следуя всем советам здесь, я использовал шаблон:
<\s*\ba\b[^<>]+\bclass\s*=\s*("|'|\\"|\\')(?:(?!\1).)*\s*classname\s*(?:(?!\1).)*\1[^>]*>
Значение:
Найдите знак-открытый знак.
Разрешить любые пробелы.
Найдите слово a.
Разрешить любой неблокирующий тег.
Найти "класс (любые пробелы) = (любые пробелы)"
Получите открытые кавычки, одно из следующих: ( "или" или "или" или ").
Из ответа Алана Мура: разрешить любые символы, которые не являются открытыми кавычками.
Найти имя класса
Разрешить любые символы, которые не являются открытыми кавычками.
Найдите заключительную цитату, которая совпадает с открытием.
Разрешить любые символы закрывающей метки.
Найдите закрывающий тег char.