Вы не можете использовать этот шаблон:
\".*\"
, поскольку "точка" не соответствует символу новой строки, если вы не используете флаг "s", который заставляет "точку" соответствовать всему (включая символ новой строки)
и даже больше этот шаблон не соответствует этому примеру:
"this is a quoted text" and "this is another one"
шаблон выше будет соответствовать всей строке вместо двух цитируемых текстов. (поскольку. * является жадным и будет соответствовать самой длинной строке, в которой это возможно, в данном случае всей строке.) Вместо этого вы должны использовать. *? что делает шаблон "неохотным", и он будет соответствовать самой короткой из возможных строк.
, чтобы обернуть его, вы можете использовать этот шаблон с флагом "s" (dot-match-all):
\".*?\"
или используйте это:
\"[^"]\"
, для которого не требуется флаг "s". (поскольку [^ "] соответствует чему угодно, кроме", который включает в себя новую строку.)
(Я не знаком с синтаксисом PHP, поэтому вам следует позаботиться о применении флагов и экранировании символов самостоятельно.)