Sendo um pouco atípico, existe um lugar bem melhor para aprender expressões regulares. O Karlisson fez um post sensacionalmente didático e claro a respeito do assunto, este aqui. Se quiser continuar a ler, agradeço :D

Olá, caros amigos da rede! Hoje teremos um curso que será útil para posteriores lições: expressões regulares!

Expressões regulares são usadas para casamento de padrão, ou seja, procura e/ou substituição de textos. Por exemplo, se eu tenho um texto enorme e quero encontrar todas as palavras de 5 letras, ou toas as que começam com "g" e terminam em "r", ou ainda as que estão no início de cada linha, é fácil fazê-lo com expressões regulares(que, daqui pra frente, chamaremos de "regexp", para não perder tempo).

Uma regexp é formada por diversos símbolos que têm significados especiais no contexto de casamento de padrões. Há variações na estrutura de regexp de linguagem para linguagem, então, no caso de discordância, o padrão aqui é o de Perl. Prosseguindo, a lista é:

.: significa qualquer caracter. Exemplo: a regexp "a." encontra "aa", "ab", "a1", "a-"...*: denota qualquer número do caracter anterior, incluindo 0. Exemplo: "a*b" encontra "b", "ab", "aab", "aaab"...+: denota pelo menos um do caracter anterior. Exemplo: "a+b" encontra "ab", "aab", "aaab"... mas não "b".?: denota ocorrência ou não do caracter, apenas uma vez. Exemplo: "a?b" encontra "ab" e "b", somente.[]: denota um conjunto de caracteres que podem preencher aquela posição, ou justamente o contrário(nesse caso usa-se [^]). Os caracteres não têm separação, e podem ser intervalos(v. próximo). Exemplo: "[abc][def]" encontra "ad", "ae", "af", "bd", "be", "bf", "cd", "ce" e "cf".-: indica um intervalo de caracteres, em ASCII. Para evitar problemas, use apenas com intervalos de letras ou números, a não ser que você saiba exatamente o que está fazendo. Exemplo: "[a-z][0-9][0-9]" encontra uma letra minúscula seguida de um número de dois algarismos.(): representa um intervalo que é procurado. É usado para substituições, e será representado como
n, sendo n definido pela ordem dos intervalos da esquerda para a direita. Exemplo: "([a-z])([0-9][0-9])" encontra as mesmas cadeias do exemplo anterior, mas pode ser usado para, digamos, substituir a letra por "X" e o número por "00" em todas as ocorrências.^: indica começo de linha.$: indica fim da linha.: caracter de escape, usado para definir os símbolos especiais como parte da string. Exemplo: "a+" econtra todas as cadeias formadas por pelo menos um "a"; "a
+" encontra a cadeia "a+".

E aqui termina nosso curso basicão de expressões regulares. Em breve já estaremos colocando este conhecimento em prática. Digo, teoricamente, mas que esse será base para o próximo tutorial, pode ter certeza! :D

E, caso esteja se perguntando, a resposta para as questões do segundo parágrafo:- encontrar todas as palavras de 5 letras: "[^A-Za-z][A-Za-z][A-Za-z][A-Za-z][A-Za-z][A-Za-z][^A-Za-z]";- todas as que começam com "g" e terminam em "r": "[^A-Za-z][Gg][A-Za-z]*[Rr][^A-Za-z]"- as que estão no início de cada linha: "^[A-Za-z]+[^A-Za-z]