Regex - como escapar o "." - ponto

545 views
Skip to first unread message

Felipe Aron

unread,
Nov 6, 2012, 2:02:40 PM11/6/12
to androidb...@googlegroups.com
Galera to com a seguinte String:

"em 05/11 as 12h39. DROGAL DOIS CORREGOS"

Logo após o horário tenho o "." (ponto). Quero pegar o que tiver na frente com Regex. Tentei usar duas barras para escape mas não adiantou. Fiz assim:

ParserUtils.getRegExp("\\. (.*?)", sms);

Porém me retorna vazio. Como pegar a String após o "."?

Obs.: ParserUtils é minha classe auxiliadora onde passo o Regex e a String, e ele me retorna o conteúdo.

--
Analista-Programador

Derci Santos

unread,
Nov 6, 2012, 2:04:43 PM11/6/12
to androidb...@googlegroups.com
Cara, Eu pegaria a posição que está o "." com o indexOf da string e depois daria um substring do local onde está o "." até o string.length;

mas pode ser que tenha outras formas melhores de se fazer isso.


--
 
 



--
 
Att,
Derci Santos
Skype: dercilima
Fones: (34) 8434 - 7699 (Claro - MG)
           (64) 3612 - 2628 (Fixo OI - GO)
           (64) 9238 - 2325 (Claro - GO)
           (64) 8158 - 9137 (Tim - GO)


Recomendação se for reenviar esta mensagem, por favor:

1. Apague o MEU endereço eletrônico e todos os outros constantes do e-mail;
2. Encaminhe como CÓPIA OCULTA (Cco ou Bcc) aos seus destinatários.
3. Agindo desta forma, você estará colaborando para dificultar a disseminação de vírus e spams, e também para tornar a internet mais segura.

Lucas Mezêncio

unread,
Nov 6, 2012, 2:05:19 PM11/6/12
to androidb...@googlegroups.com
Coloca uma barra só..

--
Lucas Araújo Mezêncio

Analista Desenvolvedor PHP
http://about.me/lucasmezencio
Linux user # 452019
Ubuntu user # 25950
31 9705 6636


2012/11/6 Derci Santos <dercii...@gmail.com>

--
 
 

Felipe Aron

unread,
Nov 6, 2012, 2:05:58 PM11/6/12
to androidb...@googlegroups.com
Então, é uma solução, porém como próprio estudo e "padrão" no projeto estou usando Regex. Mas meio chatinho viu...


--
 
 

Guilherme S. Anjos

unread,
Nov 6, 2012, 2:06:27 PM11/6/12
to androidb...@googlegroups.com
usa o split da string, vai te retornar um array de duas posições sendo

[0] = em 05/11 as 12h39
[1] = DROGAL DOIS CORREGOS



2012/11/6 Derci Santos <dercii...@gmail.com>

--
 
 



--
Luiz Guilherme S. Anjos


Felipe Aron

unread,
Nov 6, 2012, 2:06:24 PM11/6/12
to androidb...@googlegroups.com
Lucas com uma barra dá erro na String do Regex.


--
 
 

Felipe Aron

unread,
Nov 6, 2012, 2:10:07 PM11/6/12
to androidb...@googlegroups.com
Através do subString() + indexOf() é tranquilo:

String local = sms.substring(sms.indexOf(".") + 1, sms.length()).trim();

porém gostaria de saber, aprender como fazer via Regex. :) 


--
 
 

Vinicius Moises de Oliveira

unread,
Nov 6, 2012, 2:15:21 PM11/6/12
to androidb...@googlegroups.com
Olá Felipe,
 
Basta usar a seguinte expressão  \\..+  , caso vc queira testar online recomendo o seguinte site http://regexpal.com/.




--
 
 

Lucas Xavier

unread,
Nov 6, 2012, 2:16:16 PM11/6/12
to androidb...@googlegroups.com
Felipe,

Acabei de testar a regex "\\. .+" e funciona belezinha :)



--
Atenciosamente,

Lucas Xavier


--
 
 

Rafael Santiago

unread,
Nov 6, 2012, 2:18:24 PM11/6/12
to androidb...@googlegroups.com
Ainda não utilizei regex no android, portanto você saberia me dizer se os objetos Pattern e Matcher se encontram na API do android?


Em 6 de novembro de 2012 16:15, Vinicius Moises de Oliveira <nick...@gmail.com> escreveu:
--
 
 



--
-----------------------------------------------------------
Rafael Santiago
Analista de Sistemas Jr.
Bacharel em Ciência da Computação

Vinicius Moises de Oliveira

unread,
Nov 6, 2012, 2:19:09 PM11/6/12
to androidb...@googlegroups.com
Rafael,

Sim , elas estão disponiveis :)


--
 
 

Fred

unread,
Nov 6, 2012, 2:19:58 PM11/6/12
to androidb...@googlegroups.com
Pra descontrair e pensar um pouco: " Some people, when confronted with a problemthink “I know, I'll use regular expressions.” Now they have two problems"

Um dos problemas sempre mencionados, tirando a complexidade, é a performance!

--
 
 



--
"Frederico Ferrão da Silva"

Rafael Santiago

unread,
Nov 6, 2012, 2:24:03 PM11/6/12
to androidb...@googlegroups.com
Segue uma das possíveis soluções: 

public static void main(String[] args) {
String exp = "em 05/11 as 12h39. DROGAL DOIS CORREGOS";
String regex=".*\\.(.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(exp);
                matcher.matches();
System.out.println(matcher.group(1).trim());
}

Segue uma apresentação para alguns esclarescimentos sobre REGEX: http://www.slideshare.net/RafaelSantiago5/expresses-regulares

Abraço!

Felipe Aron

unread,
Nov 6, 2012, 2:28:53 PM11/6/12
to androidb...@googlegroups.com
Perfeito Rafael :)

ParserUtils.getRegExp(".*\\.(.*)", sms);

Só pra ver se entendi a expressão:

a) qualquer caracter repetindo ou não ( .* )
b) até o ponto ( \\. )
c) retornando o conteudo de qualquer caracter repetindo ou nao ( (.*) )

Isso mesmo?

Rafael Santiago

unread,
Nov 6, 2012, 2:37:22 PM11/6/12
to androidb...@googlegroups.com
Mais ou menos isso. Em regex, os parenteses permitem que você crie agrupamentos nas strings. a linha matcher.matches(); efetua a busca na string, e a string do agrupamento é retornados pela linha matcher.group(1).trim(), onde o parâmetro inteiro no método group retorna um grupo específico contado da esquerda para a direita. Como só fiz um agrupamento, o 1 representa o único grupo existente. O significado do (.*) é "crie um grupo com caracteres quaisquer deste ponto da string para frente, não importanto o que seja". O restante que você postou em a) e b)  é exatamente como você descreveu.

Felipe Aron

unread,
Nov 6, 2012, 2:40:11 PM11/6/12
to androidb...@googlegroups.com
Legal Rafael! Valeu pelas dicas e também pela grande aula "express" de Regex. :)

Rafael Santiago

unread,
Nov 6, 2012, 2:42:36 PM11/6/12
to androidb...@googlegroups.com
Por nada. Qual dúvida sobre esse assunto, só postar que, se eu ver, tento ajudar se eu souber.

A dica é: qualquer coisa que você precisar relacionado a tratamento de strings, com regex você consegue resolver.

Abraço!
Reply all
Reply to author
Forward
0 new messages