регулярное выражение, совпадающее со строками в с-подобных языках (с экранированием от обратной косой черты), выглядит следующим образом
"(\\\\.|[^"])*"
в основном: "соответствует кавычка, затем любое число (escape-последовательность или не кавычка), затем кавычка".
сопоставление за пределами строк намного сложнее, самый простой подход состоит в том, чтобы выполнить синтаксический анализ в два прохода: сначала заменить вышеупомянутое ничем (т.е. исключить все строки), а затем найти объект в остальных (т.е. все, что не является строкой).
при этом регулярные выражения не являются подходящим инструментом для синтаксического анализа языков программирования. Рассмотрим синтаксический анализатор: yacc, lemon или аналогичный.