ABC echo $partes[2]; // 1234}E possivel especificar um nome da sub-expressao atraves da notacao (?P<nome>expressao). A partir do PHP 5.2.2, tambem pode ser pela notacao (?<nome>expressao) ou (?'nome'expressao). Desta forma, e possivel obter as partes da string de forma mais legivel. Veja o exemplo anterior com as sub-expressoes nomeadas:// Capturar o prefixo de uma placa de carro (3 letras) e o sufixo (4 numeros)$string = 'ABC-1234';if (preg_match('/^(?P<prefixo>[A-Z][A-Z][A-Z])-(?P<sufixo>[0-9][0-9][0-9][0-9])$/', $string, $partes)) { echo $partes[0]; // ABC-1234 echo $partes[1]; // ABC echo $partes[2]; // 1234 echo $partes['prefixo']; // ABC echo $partes['sufixo']; // 1234}Tambem e possivel informar que uma sub-expressao nao sera capturada. Para isso, e usada a notacao (?:expressao).// Capturar o prefixo de uma placa de carro (3 letras)$string = 'ABC-1234';if (preg_match('/^([A-Z][A-Z][A-Z])-(?:[0-9][0-9][0-9][0-9])$/', $string, $partes)) { echo $partes[0]; // ABC-1234 echo $partes[1]; // ABC}Por fim, tambem podemos especificar que uma sub-expressao ira capturar uma das sub-sub-expressoes com a notacao (?|expressoes):// Capturar a sigla de segunda-feira ou terca feira$string = 'terca-feira';if (preg_match('/^(?|(seg)unda|(ter)ca)-feira$/', $string, $partes)) { echo $partes[0]; // ABC-1234 echo $partes[1]; // ter}No exemplo anterior, caso usassemos ?: ao inves de ?|, o array $partes sempre viria com a posicao 1 e 2, so que apenas uma delas estaria preenchida.Especificacao de repeticoesPodemos especificar a quantidade de repeticoes de um caractere, um grupo de caracteres ou uma sub-expressao. Existem 6 formas de especificar esta quantidade, que e colocada apos o elemento que possui repeticao: * Representa 0 ou mais ocorrencias + Representa 1 ou mais ocorrencias ? Representa 0 ou 1 ocorrencia {5} Representa exatamente 5 ocorrencias {6,} Representa 6 ou mais ocorrencias {3,7} Representa 3 a 7 ocorrenciasCom as repeticoes, podemos deixar a expressao do exemplo anterior de forma mais simples, ou seja, especificar que o grupo de caracteres [A-Z] deve se repetir exatamente 3 vezes e o grupo de caracteres [0-9] deve se repetir exatamente 4 vezes.// Capturar o prefixo de uma placa de carro (3 letras) e o sufixo (4 numeros)$string = 'ABC-1234';if (preg_match('/^([A-Z]{3})-([0-9]{4})$/', $string, $partes)) { echo $partes[0]; // ABC-1234 echo $partes[1]; // ABC echo $partes[2]; // 1234}Outros exemplos// Checar se a string eh um CPF formatadoif (preg_match('/^\d{3}\.\d{3}\.\d{3}-\d{2}$/', $string, $partes)) { // O CPF esta formatado}// Checar se a string eh formada por 3 ou mais digitos, seguido ou nao de hifen,// seguido de um ou mais digitos, seguido de 0 ou mais letrasif (preg_match('/^\d{3,}-?\d+[a-z]*$/', $string, $partes)) { // Por exemplo: "1234", "123-4", "12345", "1234-567", "1234ab", "123-4a"} else { // Por exemplo: "12", "1-2", "12-3", "123-", "123-a"}Passo 3 - Especificar as opcoes da expressaoAs opcoes da expressao sao colocadas apos o caractere que delimita o final da expressao (escolhido no passo 1). Cada letra representa uma opcao. As principais opcoes sao: i para tornar a expressao case-insensitive. m para indicar que a expressao e multi-line, portanto "^" e "$" passam a significar "inicio da string ou inicio de linha" e "fim da string ou fim de linha" respectivamente. s o meta-caractere "." passa a significar "todos caracteres, inclusive quebra de linha". u para indicar que a expressao trabalha sobre strings codificadas em UTF-8.Consulte a lista de opcoes de expressoes regulares.Exemplo da opcao "i":if (preg_match('/^a$/i',