Revert 96ea52894aea85b86d75f59fee35f90676735060
diff --git a/system/core/Router.php b/system/core/Router.php
index 3ef55ce..30bf396 100644
--- a/system/core/Router.php
+++ b/system/core/Router.php
@@ -341,13 +341,8 @@
 			// Does the RegEx match?
 			if (preg_match('#^'.$key.'$#', $uri, $matches))
 			{
-				// Are we using the default routing method for back-references?
-				if (strpos($val, '$') !== FALSE && strpos($key, '(') !== FALSE)
-				{
-					$val = preg_replace('#^'.$key.'$#', $val, $uri);
-				}
 				// Are we using callbacks to process back-references?
-				elseif ( ! is_string($val) && is_callable($val))
+				if ( ! is_string($val) && is_callable($val))
 				{
 					// Remove the original string from the matches array.
 					array_shift($matches);
@@ -384,6 +379,11 @@
 					// Execute the callback using the values in matches as its parameters.
 					$val = call_user_func_array($val, $matches);
 				}
+				// Are we using the default routing method for back-references?
+				elseif (strpos($val, '$') !== FALSE && strpos($key, '(') !== FALSE)
+				{
+					$val = preg_replace('#^'.$key.'$#', $val, $uri);
+				}
 
 				return $this->_set_request(explode('/', $val));
 			}