, если строка имеет этот прогнозируемый формат:
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[^>]*>
Значение :
Найдите знак открытия тега.
Разрешить любые пробелы.
Найдите слово a.
Разрешить любые незакрывающие теги.
Найдите "класс (любые пробелы) = (любые пробелы)"
Получите открывающие кавычки, одну из следующих: ("или 'или \" или \').
Из ответа Алана Мура: Разрешите любые символы, кроме начальных кавычек.
find classname
Разрешить любые символы, кроме начальных кавычек.
Найдите заключительную цитату, которая совпадает с начальной.
Разрешить любые символы открывающего тега.
Найдите символ закрывающего тега.