ダブルクオートで囲まれた文字列をマッチさせる際のPHPの癖

ダブルクオートで囲まれた文字列にマッチさせるには、以下の正規表現を使う。

/"([^"\\]|\\.)*"/

しかしこれがこのままではPHPのpreg系関数では使えない。(ereg系のsplitとかでは、/のデリミタを取れば問題なく使えた。)

/"([^"\\\\]|\\\\.)*"/

とするのだ。

PHPのドキュメントを見ると、
http://www.phpmanual.jp/reference.pcre.pattern.syntax.html

注意: シングルクォートあるいはダブルクォートで囲まれた PHP の 文字列 の中では、バックスラッシュは特別な意味を表します。 そのため、正規表現 \\ を使用して \ とマッチさせたい場合は PHP のコード内では "\\\\" あるいは '\\\\' と記述する必要があります。 

とあるからなのだ。