Этот
("((?:[^"\\])*(?:\\\")*(?:\\\\)*)*")
будет захватывать все строки (в двойных кавычках), включая \ "и \\ escape-последовательности. (Обратите внимание, что в этом ответе предполагается, что only escape-последовательности вваша строка \ "или \\ sequence - никакие другие символы обратной косой черты или escape-последовательности не будут захвачены.)
("(?: # begin with a quote and capture...
(?:[^"\\])* # any non-\, non-" characters
(?:\\\")* # any combined \" sequences
(?:\\\\)* # and any combined \\ sequences
)* # any number of times
") # then, close the string with a quote
Попробуйте это здесь!
Также обратите внимание, что принятый ответ Максимюка содержит «крайний случай» («Представьте, что вы пытаетесь сопоставить строку, которая заканчивается обратной косой чертой»), которая на самом деле является просто искаженной строкой.Что-то вроде
"this\"
... это не «строка, заканчивающаяся обратной косой чертой», а незамкнутая строка, оканчивающаяся на экранированную кавычку.Строка, которая действительно заканчивается обратной косой чертой, будет выглядеть как
"this\\"
..., и вышеупомянутое решение обрабатывает этот случай.
Если вы хотите немного расширить, вот это...
(\\(?:b|t|n|f|r|\"|\\)|\\(?:(?:[0-2][0-9]{1,2}|3[0-6][0-9]|37[0-7]|[0-9]{1,2}))|\\(?:u(?:[0-9a-fA-F]{4})))
... захватывает все распространенные escape-последовательности (включая экранированные кавычки):
(\\ # get the preceding slash (for each section)
(?:b|t|n|f|r|\"|\\) # capture common sequences like \n and \t
|\\ # OR (get the preceding slash and)...
# capture variable-width octal escape sequences like \02, \13, or \377
(?:(?:[0-2][0-9]{1,2}|3[0-6][0-9]|37[0-7]|[0-9]{1,2}))
|\\ # OR (get the preceding slash and)...
(?:u(?:[0-9a-fA-F]{4})) # capture fixed-width Unicode sequences like \u0242 or \uFFAD
)
См. этот Гист для получения дополнительной информации о втором пункте.