Compartilhar via


Próxima Correspondência Após uma Correspondência Vazia

Quando uma correspondência é repetida por uma sequência de caracteres, ou por chamar NextMatch ou por usar a coleção retornada pela Regex.Matches, o mecanismo de expressões regulares fornece tratamento especial às correspondências vazias.

Geralmente, NextMatch começa a próxima correspondência exatamente onde a correspondência anterior parou.No entanto, após uma correspondência vazia, NextMatch avança um caractere adicional antes de tentar a próxima correspondência.Essa regra garante que o mecanismo de correspondência avance pela sequência de caracteres.(Se ele não avançar um caractere extra, a próxima correspondência iniciaria exatamente no mesmo local que a correspondência anterior, e ela corresponderia repetidamente com a mesma sequência de caracteres vazia.)

Por exemplo, uma pesquisa por " a*" na sequência de caracteres "abaabb" retorna a seguinte sequência de correspondências.

"a", "", "aa", "", "", ""

Aqui está outro exemplo, no contexto:

(a)()b(aa)()b()b()

A primeira correspondência é o primeiro um.A segunda correspondência começa exatamente onde a primeira correspondência foi encerrado antes da primeira b; ele localiza zero ocorrências de um e retorna a seqüência de caracteres vazia.

A terceira correspondência não inicia exatamente onde a segunda correspondência finalizou, pois a segunda correspondência retornou a sequência de caracteres vazia.Em vez disso, ele começa um caractere posteriormente, após a primeira b.A terceira correspondência localiza duas ocorrências de um e retorna "suavização".

A quarta correspondência começa onde a terceira correspondência finalizou, antes do segundo b, e localiza a sequência de caracteres vazia.Então a quinta correspondência começa antes do último b e localiza a sequência de caracteres vazia novamente.A sexta correspondência começa após o último b e ainda localiza a sequência de caracteres vazia novamente.

Consulte também

Outros recursos

Expressões Regulares do .NET Framework