Regex: Parentheses without capture

Content

Use regular expressions without capturing a group by using non-capturing groups.

// Page requested is http://www.example.com/en_FR/ $uri = $_SERVER['REQUEST_URI']; // '/en_FR/'   // This regex returns matching groups for parentheses preg_match('/\/((en|fr|de|it|nl|no|ja)_[A-Z]{2}|jp)\//', $uri, $matches); $matches = array(     0 => '/en_FR/',     1 => 'en_FR',     2 => 'en' );   // This regex will include only matching groups using non-capturing groups // indicated by "?:" inside "()" preg_match('/\/((?:en|fr|de|it|nl|no|ja)_[A-Z]{2}|jp)\//', $uri, $matches); $matches = array(     0 => '/en_FR/',     1 => 'en_FR' ); // Named groups also supported preg_match('/\/(?P<locale>(?:en|fr|de|it|nl|no|ja)_[A-Z]{2}|jp)\//', $uri,     $matches); $matches = array(     0 => '/en_FR/',     'locale' => 'en_FR',     1 => 'en_FR' );