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