C++0xの文字列にだいたいマッチする正規表現を書くなどしてみた

がんばった。
\u, \U, \o, \xのあたりはあまり気にしない。あと文字コードも知らない。

$esc = '\\\\.';

$cChar = "(?:[^'\\\\\\n]|$esc)";
$cPrefix = '[uUL]';
$ch = "(?:$cPrefix?'$cChar+')";

$sChar = qq{(?:[^"\\\\\\n]|$esc)};
$strPre = '(?:[uUL]|u8)';
$simpleString = qq{(?:$strPre"$sChar*"|(?<!R)"$sChar*")};

$rChar = qq{(?:[^\\\\\\]]|\\\\(?![uU])|\\](?!\\k'dCharSeq'"))};
$dChar = q{[[:alnum:]!"\#$%&'()-^\\\\=~|{};:+*,./<>?_]};
$rawString = qq{$strPre?R"(?'dCharSeq'$dChar*)\\[$rChar*\\]\\k'dCharSeq'"};
$str = "(?:$simpleString|$rawString)";

while (<>) {
  if (/$str/) {
    print $&;
  }
}