Pergunta

Qual é a diferença entre um Grupo e um Partida em .NET RegEx?

Foi útil?

Solução

Um Partida é um objeto que indica uma determinada expressão regular corresponde (uma parte de) o texto de destino.Um Grupo indica uma parte de um jogo, se o original expressão regular contidas grupo de marcadores (basicamente, um padrão entre parênteses).Por exemplo, com o seguinte código:

string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
Match m = r.Match(text);

m seria objeto de correspondência, que contém dois grupos - grupo 1, a partir de (\w+), e que capturou "Um", e o grupo 2 (de (car)) que, combinados, bem, "carro".

Outras dicas

Um jogo é uma parte de uma cadeia de caracteres que corresponde à expressão regular, e não poderia, portanto, ser de vários jogos dentro de uma cadeia.

Dentro de um jogo, você pode definir grupos, anônimas ou nomeado, para torná-lo mais fácil dividir um fósforo.Um exemplo simples é criar uma expressão regular para procurar URLs e, em seguida, use os grupos para dentro para encontrar o protocolo (http), domínio (www.web.com), caminho (/lol/cats.html) e argumentos e o que não.

// Example I made up on the spot, probably doesn't work very well
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])"

Um único padrão pode ser encontrado várias vezes dentro de uma seqüência de caracteres, como eu disse, assim que se você usar Regex.Jogos(string texto), você poderá voltar várias correspondências, cada um consistindo de zero, um ou mais grupos.

Os nomeados grupos pode ser encontrada por qualquer indexação por número, ou com uma seqüência de caracteres.O exemplo acima pode ser usada como esta:

Match match = pattern.Match(urls);
if (!match.Success) 
    continue;
string protocol = match.Groups["protocol"].Value;
string domain = match.Groups[1].Value;

Para tornar as coisas ainda mais interessantes, um grupo poderia ser correspondido várias vezes, mas então eu recomendo começar a leitura da documentação.

Você também pode usar grupos para gerar volta de referências, e não parcial de pesquisa e substituir, mas leia mais sobre isso no MSDN.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top