Estou usando regex para encontrar um telefone no meio de uma string, mas o telefone não ta formatado, apenas números:
p=Pattern.compile("[0-9]{3,9}[0-9]{4}");
To fazendo dessa forma pq ele retorna telefones de 8 até 13 algarismos, o problema é q as vezes em um telefone tipo esse: 1234567890123 as vezes ele pega inteiro, as vezes só retorna: 12345678 e telefones do tipo: [telefone removido] só retorna em alguns casos: 12345678.
O que eu faço para pegar todos esses casos de 8 à 13 algarismos mas sem pegar pela metade?
Acho que sua expressão regular podia ser mais simples:
“\d{8,13}”
B
Bruno_Laturner
Para conhecimento:
Expressões regulares são normalmente gulosas, tendem a comer todas os caracteres que vem pela frente, até quanto o caracter acaba. Em outras palavras, casam o máximo possível que conseguem.
Se quiser casar de 8 a 13 algarismos simplesmente faça [0-9]{8,13}
C
crashov3r
thingol:
Acho que sua expressão regular podia ser mais simples:
“\d{8,13}”
Pra que simplicaficar se vc pode complicar neh? :lol:
Vlw cara
C
crashov3r
Puts, começou a dar uns probleminhas … eu to usando “\d{7,13}” . Quando aparece um telefone de 13 dígitos as vezes ele pega os 13, as vezes só 7 e assim vai…
Como posso resolver isso? :s
T
thingol
Mostre os casos para os quais você está tendo problemas. Que eu saiba, \d{7,13} deve bater com números de 7 a 13 dígitos. Se houver alguma coisa no meio, obviamente você vai ter problemas e vai ter de usar uma expressão mais complicada. Digamos que o número seja
+55-11-2345-7890
Obviamente isso é um número de telefone válido (internacional), mas não bate com a sua expressão.
C
crashov3r
não, ele vem apenas com números, nada no meio.
T
thingol
Pergunta boba número 2. Você usa Matcher.matches, Matcher.find, qual o método que você está usando?
C
crashov3r
Matcher.find
T
thingol
Hum… Estranho. O programa abaixo deve gerar a saída esperada abaixo:
importjava.util.regex.*;classTesteTelefones{publicstaticvoidmain(String[]args){Stringteste="Esta lista de 00 telefones contem os numeros: 1234567, "+"12345678, 123456789, [telefone removido], "+"[telefone removido], [telefone removido], 123456789012, "+"1234567890123, 12345678901234, 123456789012345";Patternpat=Pattern.compile("\d{8,13}");Matchermat=pat.matcher(teste);while(mat.find()){System.out.println("Found: ["+mat.group()+"]");}}}