3292 registros
2 hoje
10 nesta semana
27 neste mês![]() | 73% | Brasil (36680) |
![]() | 5% | Portugal (2278) |
![]() | 3% | EUA (1752) |
![]() | 0% | Holanda (235) |
![]() | 0% | Rússia (211) |
| Hoje: | 963 |
| Ontem: | 2643 |
| No mês: | 24742 |
| Mês passado: | 25815 |
| Total: | 50557 |
| Recorde: | 3037 |
| No dia: | 04.03.10 |
| Leituras hoje: | 9023 |
| Leituras Total: | 219075 |
| Bots hoje: | 209 |
| Dados desde: | 16.02.2010 |
|
Sáb 25 Ago 2007 22:00 |
|
|
Não se pode simplesmente escrever [0-255] para encontrar um número que vai de 0 a 255 - isto dá caca Usando colchetes, definimos uma classe de caracteres. Esta classe de caracteres contém 0-2, além dos caracteres 55. O hífen indica uma sequência e foi colocado entre 0 e 2, ou seja, corresponde aos algarismos 0, 1 e 2. A sequência é complementada por 55, o que é chover no molhado porque não é preciso definir mais de uma vez um caractere dentro de uma sequência. Bem, para encurtar a história, a classe de caracteres "explícita" é [0125] e, é claro, não podemos exigir que esta classe encontre outros números além de 0, 1, 2 e 5. O pulo do gatoComo as expressões regulares lidam apenas com texto, o motor regex trata 0 como um único caracter e 255 como três caracteres. A conclusão óbvia é que estamos procurando uma regex que encontre combinações de um a três caracteres. A regex com uma classe de caracteres [0-9] consegue localizar números de 0 a 9. Da mesma forma, uma regex com as classes de caracteres [1-9][0-9] consegue achar números de 10 a 99. Até aí, tudo bem. Esta é a parte fácil. Para encontrar números com três dígitos a coisa é um pouco mais complicada porque será preciso descartar os números de 256 a 999 (se é que, depois de tanta explicação, você ainda se lembra que a tarefa é achar números de 0 a 255 Pois bem. Combinando caracteres literais com classes de caracteres, a regex 1[0-9][0-9] isola os números de 100 a 199 e a regex 2[0-4][0-9] isola os números de 200 a 249. Putz... já deu para achar uma luz para os números de 0 a 249, só faltam os de 250 a 255. Então, vamos lá! Sabendo manobrar as classes de caracteres, não é nenhum bicho de sete cabeças descobrir que 25[0-5] corresponde aos números de 250 a 255. O que conseguimos fazer até agora foi "quebrar" o problema em problemas menores. Como não deixaram de ser problemas e, como por definição cada problema tem uma solução, basta "costurar" as soluções dos problemas fracionados para chegar à solução final. Aqui estão os "pedaços" encontrados: [0-9] algarismos de 0 a 9 [1-9][0-9] algarismos de 10 a 99 1[0-9][0-9] algarismos de 100 a 199 2[0-4][0-9] algarismos de 200 a 249 25[0-5] algarismos de 250 a 255 AHÁ!!! Estamos quase lá. Agora é só usar algumas alternativas para que a regex funcione como esperado. Alternativas em regex significam "ou". Se você leu o tutorial REGEX - Caracteres ainda deve se lembrar da história do gato|rato... se não souber do que estou falando, é melhor dar uma espiada antes de continuar. Bão, partindo do pressuposto de que você saiba usar alternativas em regex, a expressão a seguir é o pulo do gato que estávamos procurando: [0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5] com um pequeno senão (sempre precisa existir um senão para melar \b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b Agora, se você estiver validando uma entrada de dados (num formulário, por exemplo), use âncoras: ^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ FinalmentesPara completar este exemplo, seguem mais alguns para encontrar outras sequências de algarismos que são muito comuns:
Referências
|
| Última atualização ( Dom, 06.12.2009 12:23 ) |