Для всех, кто ищет полнофункциональный анализатор строк, попробуйте это:
(?:(?:"(?:\\"|[^"])+")|(?:'(?:\\'|[^'])+'));
Использовать в preg_match:
$haystack = "something else before 'Lars\' Teststring in quotes' something else after";
preg_match("/(?:(?:\"(?:\\\\\"|[^\"])+\")|(?:'(?:\\\'|[^'])+'))/is",$haystack,$match);
Возвращает:
Array
(
[0] => 'Lars\' Teststring in quotes'
)
Работает с одиночными и двойными кавычками.