Skoitoman 0 Denunciar post Postado Junho 25, 2010 Galera poderiam me dar uma ajuda? Desenvolvi o seguinte método para retornar apenas o valor de um grupo de cada ocorrência na expressão regular: Onde: Configuracoes.ExpressaoTeste possui a expressão "^(\[{1}imag{1}\:{1}\"{1})(.{1,})(\"{1}\]{1})$". E _verificar possui a string "[imag:\"teste\"][imag:\"teste2\"][imag:\"teste3\"]" public List<string> ListaImagensConteudo() { List<string> retorno = new List<string>(); //Seta a expressão para consulta de imagens regex = new Regex(Configuracoes.ExpressaoTeste); //Seleciona todas as ocorrencias MatchCollection matches = regex.Matches(@_verificar); foreach (Match match in matches) { //Lista todos os grupos da expressao GroupCollection grupos = match.Groups; //Retorna apenas o valor do grupo que é o nome da imagem retorno.Add(grupos[2].Value); } return retorno; } A expressão regular é justamente para validar se a string possui a substring [imag:\"xxxxxx\"], ele encontra porém o MatchCollection exibe sempre uma ocorrência mas nesse exemplo possui 3. Ja alterei a expressão para "(\[{1}imag{1}\:{1}\"{1})(.{1,})(\"{1}\]{1})" e ".*(\[{1}imag{1}\:{1}\"{1})(.{1,})(\"{1}\]{1}).*" mas mesmo assim não funciona, alguem tem alguma idéia? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Junho 26, 2010 Sabe se o problema esta na expressão ou alguma outra coisa? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Skoitoman 0 Denunciar post Postado Junho 28, 2010 Pois é essa é a questão, vou simplificar. Configuracoes.ExpressaoTeste possui a expressão: ^(\[{1}imag{1}\:{1}\"{1})(.{1,})(\"{1}\]{1})$; regex = new Regex(Configuracoes.ExpressaoTeste); //Seleciona todas as ocorrencias MatchCollection matches = regex.Matches(@"[imag:\"imagem1.jpg\"][imag:\"imagem2.jpg\"][imag:\"imagem3.jpg\"]"); matches deveria trazer três ocorrências: [imag:\"imagem1.jpg\"], [imag:\"magem2.jpg\"] e [imag:\"imagem3.jpg\"], porém apresenta apenas uma que é "[imag:\"imagem1.jpg\"][imag:\"imagem2.jpg\"][imag:\"imagem3.jpg\]". Eu preciso recuperar todos os nomes de imagem, resolveria com o match trazendo cada ocorrência, então aonde será que está o erro? Compartilhar este post Link para o post Compartilhar em outros sites
Skoitoman 0 Denunciar post Postado Junho 28, 2010 Galera, consegui resolver, o problema estava na expressão. O trecho .{1,} eu sabia que significava tudo, mas não que era tudo literalmente kkkkk, este trecho simplesmente ignorava todo o restante da expressão, então ele entendia que o final que era "] fazia parte da mesma, então eu mudei para [A-Za-z0-9\.\/\&\?]{1,}. Também simplifiquei um pouquinho a expressão mas a m3rd@ erra essa mesma kkkk. Ficou assim: (\[imag\:\")([A-Za-z0-9\.\/\&\?]{1,})(\"\]) Valew!!!!! Compartilhar este post Link para o post Compartilhar em outros sites