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