Kimura 0 Denunciar post Postado Junho 24, 2011 Olá, Perdoem se eu estiver postando no lugar errado, mas acho que a minha dúvida se encaixa em vários assuntos. Tenho a seguinte expressão regular: cur_([0-9]+) Dentro desta regra quero ignorar os valores que estão entre 102 a 109. Como posso proceder? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Junho 25, 2011 Isso podia ser facilmente resolvido sem uso de expressões regulares. Veja bem: $string = 'cur_105'; $string = explode ('_', $string); if ($string[0] == 'cur') { $cod = (int)$string[1]; if ( !($cod > 101 && $cod < 110) ) {//se $cod NÃO for MAIOR que 101 E MENOR que 110... //faz o que tem que fazer... } } Dá ainda para fazer com operadores bit-a-bit, ou insistir nas expressões regulares. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Kimura 0 Denunciar post Postado Junho 27, 2011 Isso podia ser facilmente resolvido sem uso de expressões regulares. Veja bem: $string = 'cur_105'; $string = explode ('_', $string); if ($string[0] == 'cur') { $cod = (int)$string[1]; if ( !($cod > 101 && $cod < 110) ) {//se $cod NÃO for MAIOR que 101 E MENOR que 110... //faz o que tem que fazer... } } Dá ainda para fazer com operadores bit-a-bit, ou insistir nas expressões regulares. []'s Com certeza daria Matheus, porém coloquei no formato de expressão, pois é assim e só assim que preciso. Coloquei esta dúvida aqui no fórum php, pois acho que o pessoal daqui mais lógico e certamente conseguirei sanar esta minha necessidade. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Kimura 0 Denunciar post Postado Junho 27, 2011 Olá, Consegui realizar uma solução: cur_(?!10[2-9])[0-9]+ Está funcionando perfeitamente na programação, porém não sei se há regras especiais para o MySQL, que ainda não está funcionando. Por favor, se puderem mover para o fórum de banco agradeceria. Obrigado. Resumo: Está selecionando qualquer valor, exceto valores entre 102-109. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Junho 27, 2011 Olá, se for no usar no MySQL, use SELECT `field` FROM `table` WHERE `field` NOT REGEXP '[[:<:]]cur_10[2-9][[:>:]]'; Até ;) Compartilhar este post Link para o post Compartilhar em outros sites
Kimura 0 Denunciar post Postado Junho 27, 2011 Perfeito Carlos, simplesmente perfeito. Realmente não sabia que se podia negar uma expressão desta forma. Muito obrigado. Está resolvido. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Junho 27, 2011 Amigo, qual o resultado esperado ? dependendo você pode usar um NOT IN .. ou operadores normais mesmo .. mysql> select * from teste; +--------+ | numero | +--------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +--------+ 5 rows in set (0.00 sec) mysql> select * from teste where numero < 7 and numero > 1; +--------+ | numero | +--------+ | 2 | | 3 | | 4 | | 5 | | 6 | +--------+ 5 rows in set (0.00 sec) mysql> select * from teste where numero < 1 or numero > 7; +--------+ | numero | +--------+ | 8 | | 9 | | 10 | +--------+ 3 rows in set (0.00 sec) Compartilhar este post Link para o post Compartilhar em outros sites