Index: src/wp-includes/rewrite.php
===================================================================
--- src/wp-includes/rewrite.php	(revision 27834)
+++ src/wp-includes/rewrite.php	(working copy)
@@ -362,8 +362,10 @@
 		if ( !empty($url) && ($url != $request) && (strpos($match, $url) === 0) )
 			$request_match = $url . '/' . $request;
 
-		if ( preg_match("!^$match!", $request_match, $matches) ) {
+		$pattern = '@^' . str_replace('@', '\@', $match) . '@';
 
+		if ( preg_match($pattern, $request_match, $matches) ) {
+
 			if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) {
 				// this is a verbose page match, lets check to be sure about it
 				if ( ! get_page_by_path( $matches[ $varmatch[1] ] ) )
